Haga el hyperlink del text o click UITextView

Tengo el UITextView y UITextView text en él desde tres tags (post, títuloUrl y url). Lo que necesito es que quiero hacer clic en el text de "titleUrl" para abrir el valor de "url" en la vista web. Logré abrir el enlace directamente desde url, pero necesito abrir el enlace haciendo clic en "titleUrl". He intentado lograr lo siguiente de este código.

 [self buildAgreeTextViewFromString:NSLocalizedString(@"I agree to the #<ts>terms of service# and #<pp>privacy policy#", @"PLEASE NOTE: please translate \"terms of service\" and \"privacy policy\" as well, and leave the #<ts># and #<pp># around your translations just as in the English version of this message.")]; 

Pero no estoy recibiendo esto de cómo modificar esto para lograr la funcionalidad. Quiero ingresar el valor have en cadena, no tengo el text estático para ingresar. ¿Alguien me puede guiar para manejar esto?

Actualizar:

 NSString *message = [NSString stringWithFormat:@"%@\n ", tempStr1]; NSString *message1 = [NSString stringWithFormat:@"\n#<pp>%@#", titlStr1]; NSString *localizedString = NSLocalizedString(message1, nil); NSRange ppRange = [localizedString rangeOfString:NSLocalizedString(message1, nil) options:NSCaseInsensitiveSearch]; NSURL *ppURL = [NSURL URLWithString:strUrl]; NSDictionary *attribute1 = @{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:15.0], }; NSMutableAttributedString *newAttString = [[NSMutableAttributedString alloc] initWithString:message attributes:attribute1]; // NSMutableAttributedString *finalMessage = [[NSMutableAttributedString alloc] initWithString:localizedString]; [finalMessage beginEditing]; [finalMessage addAttributes:attribute1 range:ppRange]; [finalMessage addAttribute:NSLinkAttributeName value:ppURL range:ppRange]; [finalMessage endEditing]; [newAttString appendAttributedString:finalMessage]; self.txtView.attributedText = newAttString; 

Esto es tan simple como usar una NSMutableAttributedString . Nota: Esta no es la única manera, esto se puede hacer con la búsqueda de ranges, etc., esto es solo una implementación simple para llevarlo en la dirección correcta, ya que tiene el post estático, porque lo localiza a todos, lo que significa que usted tener la forma inglesa estática de la misma.

 NSString *tosString = @"Terms of Service"; NSString *ppString = @"Privacy Policy"; NSString *message = [NSString stringWithFormat:@"I agree to the #<ts>%@# and #<pp>%@#", tosString, ppString]; NSString *localizedString = NSLocalizedString(message, nil); NSRange tosRange = [localizedString rangeOfString:NSLocalizedString(tosString, nil) options:NSCaseInsensitiveSearch]; NSRange ppRange = [localizedString rangeOfString:NSLocalizedString(ppString, nil) options:NSCaseInsensitiveSearch]; NSURL *tosURL = [NSURL URLWithString:@"http://toslink.com"]; NSURL *ppURL = [NSURL URLWithString:@"http://pplink.com"]; NSMutableAttributedString *finalMessage = [[NSMutableAttributedString alloc] initWithString:localizedString]; [finalMessage beginEditing]; [finalMessage addAttribute:NSLinkAttributeName value:tosURL range:tosRange]; [finalMessage addAttribute:NSLinkAttributeName value:ppURL range:ppRange]; [finalMessage endEditing]; self.yourTextView.attributedText = finalMessage; 

Busque en utilizar una cadena atribuida con NSLinkAttributeName .

Swift 3.0

en tu vista, cargó …

let tosString = "Términos de service" permiten que ppString = "Política de privacidad" let message = "Al iniciar session, acepta nuestra (tosString) y que ha leído nuestro (ppString)"

  let localizedString = NSMutableAttributedString(string: message) let tosRange = localizedString.mutableString.range(of: tosString) let ppRange = localizedString.mutableString.range(of: ppString) let tosURL = URL(string: "http://toslink.com")! let ppURL = URL(string: "http://pplink.com")! localizedString.addAttribute(NSLinkAttributeName, value: tosURL, range: tosRange) localizedString.addAttribute(NSLinkAttributeName, value: ppURL, range: ppRange) demoTextView.delegate = self demoTextView.isSelectable = true demoTextView.isUserInteractionEnabled = true localizedString.endEditing() self.demoTextView.attributedText = localizedString 

y utilizando textview delegate method func textView (_ textView: UITextView, shouldInteractWith URL: URL, en characterRange: NSRange) -> Bool {// Maneje su control devuelve true}