Domanda

Voglio usare stringhe attribuite con NSLinkAttributeName Per creare collegamenti cliccabili all'interno di un file UILabel istanza all'interno del mio progetto iOS 7, che ora è finalmente possibile senza usare librerie esterne.

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

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

L'applicazione dell'attributo su una stringa visualizza il testo come blu e sottolineato, ma non succede nulla su clic/tocca. L'interazione dell'utente è abilitata per l'etichetta. Qualcuno sa come si fa questo? Grazie!

È stato utile?

Soluzione

Posso rispondere alla mia domanda ora: sto usando UITextView invece di UILabel adesso. Ho formattato il UITextView apparire e comportarsi come le mie etichette e aggiunto:

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;

Non dimenticare di impostare il delegato, devi implementare UITextViewDelegate! Ora implementiamo il metodo delegato:

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

Questo apre automaticamente il fornito NSURL-Instance dalla stringa attribuita nella mia domanda su Click/Tap.

Ricorda: funziona solo su iOS 7, per il supporto legacy hai bisogno di librerie esterne

AGGIORNARE:

Fare il UITextViewIl comportamento proprio come le etichette era un disastro totale alla fine e mi sono imbattuto in alcuni orribili behaviurs. Ho finito per usare il Ttttattributedlabel biblioteca che è semplicemente fantastica e mi ha permesso di usare le etichette anziché UITextViewS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top