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!