如何在UITextView URL

时间:2016-09-24 20:11:34

标签: ios swift

我有一个检测主题标签的属性字符串,并为hash:[word]的每个主题标签添加了一个链接属性。然后,此字符串显示在UITextView内,并被检测为链接。这适用于具有普通字符的单词,但是,如果有一个表情符号,它会在尝试按下链接时崩溃。通常它会调用textView(_:shouldInteractWith:in:),但在它调用之前它会崩溃。

不幸的是,Xcode没有提供代码崩溃的任何特定行,但堆栈轨道看起来像这样:

#0  0x000000010ff4ad55 in static DateComponents._unconditionallyBridgeFromObjectiveC
(NSDateComponents?) -> DateComponents ()
#1  0x000000010c2214df in @objc MyTableTextCell.textView(UITextView, shouldInteractWith : 
URL, in : _NSRange) -> Bool ()
#2  0x0000000110d88282 in -[_UITextViewInteractableLink allowInteraction:] ()
#3  0x0000000110d86f22 in -[_UITextViewInteractableItem handleTap] ()
#4  0x0000000110d86df4 in -[UITextView(LinkInteraction)
 validateInteractionWithLinkAtPoint:] ()
#5  0x0000000110749f8b in -[UITextInteractionAssistant(UITextInteractionAssistant_Internal)
 linkTapRecognizer:] ()
#6  0x0000000110733289 in -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] ()

如何使表情符号标签的点击有效?我已经尝试了逃避它的百分比,但它似乎没有做任何事情。

1 个答案:

答案 0 :(得分:1)

这有点旧,但如果获取的字符不允许通过网址编码(例如表情符号),则网址点按处理代码会在您提供的位置崩溃。因此,例如,在使用NSLinkAttributedName手动创建NSAttributedString时,请确保该值为URLEncoded。

当UITextView进行链接检测时,它已经为您正确执行此操作。