我有一个检测主题标签的属性字符串,并为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:] ()
如何使表情符号标签的点击有效?我已经尝试了逃避它的百分比,但它似乎没有做任何事情。
答案 0 :(得分:1)
这有点旧,但如果获取的字符不允许通过网址编码(例如表情符号),则网址点按处理代码会在您提供的位置崩溃。因此,例如,在使用NSLinkAttributedName手动创建NSAttributedString时,请确保该值为URLEncoded。
当UITextView进行链接检测时,它已经为您正确执行此操作。