Pergunta

Eu quero usar atribuída cadeias com NSLinkAttributeName para criar links clicáveis dentro de um UILabel instância dentro do meu iOS 7 projeto, que agora é, finalmente, possível sem o uso de bibliotecas externas.

NSURL *url = [NSURL URLWithString:@"http://www.google.com"];

NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
                          url, NSLinkAttributeName, nil];

Aplicar o atributo de uma cadeia de caracteres exibe o texto como azul e sublinhados, mas não acontece nada no clique/toque.A interação do usuário é habilitado para o rótulo.Alguém sabe como fazer isso?Obrigado!

Foi útil?

Solução

Que eu possa responder a minha própria pergunta agora:Eu estou usando UITextView em vez de UILabel agora.Eu ter formatado o UITextView a aparência e comportamento de minhas etiquetas e acrescentou:

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;

Não se esqueça de definir o delegado, terá de implementar UITextViewDelegate!Agora vamos implementar o método delegado:

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

Isso abre automaticamente o desde que o NSURL-exemplo a partir do atribuído cadeia na minha pergunta no clique/toque.

Lembre-se:Isso funciona no iOS 7, para o legado de suporte de que você precisa bibliotecas externas

ATUALIZAÇÃO:

Fazer o UITextViews se comportar apenas como rótulos foi uma bagunça total no final e me deparei com algumas horrível iOS comportamentos.Eu acabei usando o TTTAttributedLabel biblioteca que é simplesmente ótimo e me permitiu usar rótulos em vez de UITextViews.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top