ios7 uilabel nsurl nsattributedstring clickable

ios7 - UILabel y NSLinkAttributeName: no se puede hacer clic en el enlace



nsurl nsattributedstring (1)

Ahora puedo responder mi propia pregunta: ahora estoy utilizando UITextView lugar de UILabel . He formateado el UITextView para ver y comportarme como mis etiquetas y he agregado:

UITextView *textView = [[UITextView alloc] init]; textView.scrollEnabled = NO; textView.editable = NO; textView.textContainer.lineFragmentPadding = 0; textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0); textView.delegate = self;

¡No olvide configurar el delegado, debe implementar UITextViewDelegate ! Ahora implementamos el método de delegado:

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)url inRange:(NSRange)characterRange { return YES; }

Esto abre automáticamente el proporcionado NSURL -instance de la cadena atribuida en mi pregunta al hacer clic / toque.

Recuerde: esto solo funciona en iOS 7, para soporte de versiones anteriores necesita bibliotecas externas

ACTUALIZAR:

Hacer que las UITextView comporten como las etiquetas fue un desastre total al final y me encontré con algunos comportamientos de iOS horribles. Terminé usando la biblioteca TTTAttributedLabel , que es simplemente genial y me permitió usar etiquetas en lugar de UITextView .

Quiero usar cadenas atribuidas con NSLinkAttributeName para crear enlaces UILabel dentro de una instancia de UILabel en mi proyecto iOS 7, que ahora es finalmente posible sin usar bibliotecas externas.

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys: url, NSLinkAttributeName, nil];

Al aplicar el atributo en una cadena, el texto aparece en azul y subrayado, pero no ocurre nada al hacer clic / tocar. La interacción del usuario está habilitada para la etiqueta. ¿Alguien sabe cómo hacer esto? ¡Gracias!