2015-11-07 3 views
4

Я работаю над приложением IOS, и я использую Swift. Я хочу сделать слово clickable и открыть некоторый URL (на данный момент www.apple.com) при нажатии этого слова.NSLinkAttributeName не работает в UITextView

Я использую следующий код, но по какой-то причине он не работает.

func setDescription(description: NSAttributedString) 
{ 
    let descriptionRect = CGRectMake(10, 50, self.bounds.size.width - 20, self.bounds.size.height-20) 
    let descriptionView = UITextView(frame: descriptionRect) 
    descriptionView.editable = false 
    descriptionView.selectable = false 
    descriptionView.attributedText = description 
    descriptionView.delegate = self 
    descriptionView.font = UIFont(name: "Helvetica", size: 14) 
    NSLog("%@", descriptionView.attributedText) 
    self.addSubview(descriptionView) 
} 

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 
    NSLog("In text view delegate") 
    return true; 
} 

Ниже фрагмент кода принимает строку и формы приписано строку с первыми 5 символов холдинг NSLinkNameAttribute. Затем я вызвал функцию setDescription, чтобы добавить эту атрибутную строку в TextView.

  let mutableAttrString = NSMutableAttributedString(string: attrString1) 
      let linkURL = NSURL(string: "http://www.apple.com") 
      mutableAttrString.addAttribute(NSLinkAttributeName,value: linkURL!,range: NSMakeRange(0, 5)) 
      wordDetailView.setDescription(mutableAttrString) 

Когда я нажимаю на слово, которое имеет атрибут link, делегат textview даже не получил вызов !!!! Может кто-то, пожалуйста, помогите мне, почему он не работает и как он работает.

спасибо.

ответ

16

Из ссылки UITextViewDelegate:

ВАЖНЫХ ссылки в представлениях текста является интерактивным, только если вид текста выбираемых но нередактируемым. То есть, если значение выбранного свойства UITextView равно YES, а свойство isEditable равно NO.

Меняет descriptionView.selectable = false к descriptionView.selectable = true

+0

модифицированной descriptionView.selectable в действительность. даже тогда он не работает. – sr116

+4

Вы тестируете устройство или симулятор? Иногда в симуляторе кран не регистрирует ссылку. Попробуйте долгое нажатие в центре слова, и оно будет работать. – beyowulf

+0

длинный печать сделал произведение. Спасибо. – sr116

Смежные вопросы