texto seleccionar puedo portapapeles porque pegar para link copiar como app iphone objective-c uilabel

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 .