2016-09-24 5 views
0

ハッシュタグを検出し、各ハッシュタグのリンク属性をhash:[word]に追加する属性付き文字列があります。この文字列はUITextViewの内部に表示され、リンクとして検出されます。これは普通の文字の単語でうまく動作しますが、絵文字があるとリンクを押すとクラッシュします。通常はtextView(_:shouldInteractWith:in:)と呼ばれますが、それが呼び出される前にクラッシュします。UITextView URLでemojisを許可する方法

残念ながら、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 done ... – Tometoyou

+0

@rmaddyああ、ちょうどそれを解決!問題は、リンクの 'word'部分が実際にはオプションの文字列で、何らかの形で' hash:\(word) 'をリンクとしてクラッシュさせたことでした。これは、それが絵文字だったときだけです!単語はbtwでエンコードされたパーセントです。 – Tometoyou

答えて

0

これは少し古いですが、URLコードの処理コードは、URLエンコーディング(emojisなど)で許可されない文字を取得すると、指定した場所でクラッシュします。たとえば、NSLinkAttributedNameを使用してNSAttributedStringを手動で作成する場合、その値がURLEncodedであることを確認します。

UITextViewがリンクを検出すると、これはすでに正しく行われています。

関連する問題