iphone - puedo - Permitir al usuario seleccionar texto de UILabel para copiar
porque no puedo copiar y pegar en mi iphone (3)
Esta pregunta ya tiene una respuesta aquí:
Tengo una UILabel, pero ¿cómo puedo permitir que el usuario seleccione una parte de su texto? No quiero que el usuario pueda editar el texto ni la etiqueta / campo de texto para tener un borde.
La versión de copiar y pegar de un hombre pobre, si no puede, o no necesita usar una vista de texto, sería agregar un reconocedor de gestos a la etiqueta y luego simplemente copiar todo el texto en la mesa de trabajo. No es posible hacer solo una parte a menos que use un UITextView
Asegúrese de informar al usuario que se ha copiado y de que admite tanto un solo toque de toque como una pulsación prolongada, ya que detectará a los usuarios que intenten resaltar una parte del texto. Aquí hay un poco de código de ejemplo para comenzar:
Registre los reconocedores de gestos en su etiqueta cuando lo cree:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textTapped:)];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(textPressed:)];
[myLabel addGestureRecognizer:tap];
[myLabel addGestureRecognizer:longPress];
[myLabel setUserInteractionEnabled:YES];
A continuación manejamos los gestos:
- (void) textPressed:(UILongPressGestureRecognizer *) gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateRecognized &&
[gestureRecognizer.view isKindOfClass:[UILabel class]]) {
UILabel *someLabel = (UILabel *)gestureRecognizer.view;
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setString:someLabel.text];
...
//let the user know you copied the text to the pasteboard and they can no paste it somewhere else
...
}
}
- (void) textTapped:(UITapGestureRecognizer *) gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateRecognized &&
[gestureRecognizer.view isKindOfClass:[UILabel class]]) {
UILabel *someLabel = (UILabel *)gestureRecognizer.view;
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setString:someLabel.text];
...
//let the user know you copied the text to the pasteboard and they can no paste it somewhere else
...
}
}
Usted usa crear un UITextView y hacer su. .editable
a NO. Luego tiene una vista de texto que (1) el usuario no puede editar (2) no tiene borde y (3) el usuario puede seleccionar texto desde ella.
No es posible con UILabel
.
Deberías usar UITextField
para eso. Simplemente deshabilite la edición usando el método delegado textFieldShouldBeginEditing
.