2016-09-24 14 views
0

我有一個屬性字符串,它檢測到標籤併爲每個hash:[word]#標籤添加鏈接屬性。該字符串然後顯示在UITextView內,並被檢測爲鏈接。這適用於具有普通字符的單詞,但是,如果有一個表情符號在嘗試按鏈接時崩潰。通常它會調用textView(_:shouldInteractWith:in:),但在它調用之前崩潰。如何在UITextView URL中允許表情符號

不幸的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

提供有關崩潰和任何相關代碼的詳細信息(使用這些詳細信息更新您的問題)。 – rmaddy

+0

@rmaddy完成了...... – Tometoyou

+0

@rmaddy啊剛剛解決了它!問題在於鏈接的「word」部分實際上是一個可選字符串,並在鏈接崩潰時以某種方式放置「hash:\(word)」。這隻有當它是一個表情符號!單詞是百分比編碼的btw。 – Tometoyou

回答

0

這有點舊了,但如果URL獲取的字符不能通過URL編碼(例如emojis),URL提要處理代碼將在您提供的位置崩潰。因此,例如,手動創建NSAttributedString並使用NSLinkAttributedName時,請確保該值爲URLEncoded。

當UITextView沒有鏈接檢測時,它已經爲你正確地做到了這一點。