Se è anche necessario filtrare alcune parole da UITextView e evidenziare/cambiare colore di quel particolare testo, è possibile utilizzare il seguente codice.
Qui, sto recuperando tutto il testo del documento nella stringa Contenuto e filtro del testo particolare che è in ebraico.
NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc]initWithString:content attributes:nil];
[aStr addAttribute:NSLinkAttributeName value:@"http://www.apple.com" range:[content rangeOfString:@"מדיניות פרטיות"]];
[aStr addAttribute:NSLinkAttributeName value:@"http://www.google.com" range:[content rangeOfString:@"לינק"]];
textview.linkTextAttributes = @{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)};
textview.delegate = (id)self;
//...You può secondo il vostro colore personalizzato
[aStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:[content rangeOfString:@"מדיניות פרטיות"]];
[aStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:[content rangeOfString:@"לינק"]];
// qui si può anche aggiungere il gesto rubinetto su quel testo. // Tap gesto
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedTextView:)];
[textview addGestureRecognizer:tapRecognizer];
[textview setAttributedText:aStr];
textview.textAlignment=NSTextAlignmentRight;
// Per ottenere la posizione del testo nel gesto rubinetto
-(void)tappedTextView:(UITapGestureRecognizer *)tapGesture
{
UITextView *textView = (UITextView *)tapGesture.view;
CGPoint tapLocation = [tapGesture locationInView:textView];
UITextPosition *textPosition = [textView closestPositionToPoint:tapLocation];
NSDictionary *attributes = [textView textStylingAtPosition:textPosition inDirection:UITextStorageDirectionForward];
NSString *urlStr = attributes[NSLinkAttributeName];
if (urlStr)
{
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",url]]];
PrivacyViewController *next = [PrivacyViewController new];
[self.navigationController pushViewController:next animated:YES];
}
}
Stato un po 'da quando ho lavorato con le stringhe attribuite, ma a me sembra che il tuo problema è che stai impostando 'resultsTextView' da attribuire stringa, ma nella riga successiva lo imposti come' NSString' non attribuito. 'NSString' non ha attributi, quindi in pratica stai" annullando "qualsiasi attributo che hai" fatto ". Se non ricordo male, non puoi avere entrambe le proprietà 'attributeText' e' text', o è uno dei due. – AMI289
Vedere la risposta È possibile grassetto Testo particolare in textView. –
@KiritModi So che puoi accoppiarti. Ma vedi la domanda, in particolare l'ultima riga di codice. alla fine usa 'NSString' per il suo' UITextView', e non 'NSAttributedString'. Non puoi mettere in grassetto il testo in uno standard 'NSString'. – AMI289