2016-10-12 4 views
0

私のプロジェクトでは、IBのビューにTTTAttributedLabelを追加し、そのリンクを追加しました。TTTAttributedLabelリンクはスタイリングされており、UILongPressGestureRecognizerを持っていますが、UITapGestureRecognizerはありません

私はSOに関する同様の質問(thisthisなど)を見てきましたが、運はありません。

正しく表示されますが、期待通りにリンクが設定されています。しかし、私がリンクをタップしようとすると-(void)attributedLabel:didSelectLinkWithURL:が呼び出されていません。しかし、代わりに長めのプレスを使用すると、-(void)attributedLabel:didLongPressLinkWithURL:atPoint:が期待どおりに解雇されます。だから私はデリゲートが働いていると確信しています。ラベルもtapGestureRecognizer

(lldb) po label.gestureRecognizers 
<__NSSingleObjectArrayI 0x60800000ee60>(
<UILongPressGestureRecognizer: 0x7f88f6c5d480; state = Began; view = <TTTAttributedLabel 0x7f88f6f8ada0>; target= <(action=longPressGestureDidFire:, target=<TTTAttributedLabel 0x7f88f6f8ada0>)>> 
) 

を持っていないように思えここでは、コードです:

RFStaticAttributedLabelFormView *labelView = [RFStaticAttributedLabelFormView new]; 
labelView.staticLabel.userInteractionEnabled = YES; 
labelView.staticLabel.delegate = self; 
NSString *text = RFLocalized(@"TXT_FINES_SEARCH_FNS"); 
[labelView.staticLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:nil]; 
NSRange r = [text rangeOfString:RFLocalized(@"TXT_FINES_SEARCH_FNS_LINK")]; 
[labelView.staticLabel addLinkToURL:[NSURL URLWithString:@"http://www.google.com"] withRange:r]; 

RFStaticAttributedLabelFormViewはXIBからインスタンス化された図です。

ここからどこへ行くか不明です。

答えて

1

私は単一のTTTAttributedLabelで新しく新しいプロジェクトを作成しました。私がデリゲートメソッドをフックした後、すべてが期待どおりに動作するようになりました。私はラベル上でジェスチャーレコグナイザーをチェックしました。そしてそれはタップレコグナイザーもなく、長い報道の旅しかないことが判明しました。

その後、私は自分のオリジナルのプロジェクトを見直しました。問題の原因がわかりました。階層内のメインビューには、すべてのタップイベントをインターセプトしていた別のタップジェスチャー認識機能がありました。私はこの行を追加しました:

tap.cancelsTouchesInView = NO; 

そして、TTTAttributedLabelのリンクが必要なように動作し始めました。この答えが似たような問題を持つ人に役立つことを願っています。

0

<TTTAttributedLabelDelegate>プロトコルの代理メソッド - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url;を実装しましたか?

+0

はい、もちろんです。そこにログメッセージを追加したので、私はそれが呼ばれていないと確信しています。 – NKorotkov

関連する問題