0

UITextView に挿入されるテキストの提案を含むラベルを含むいくつかの UITableViewCells を持つ UITableView があります。ユーザーがテキストの提案でいくつかの uitableviewcell をタップすると、このテキストが uitextview に入りますが、ユーザーが自分で uitextview を編集できるようにしたいです。

テキストビューの編集を開始した後に背景をタップする機能を追加するまで、すべて正常に機能していましたが、これによりキーボードが非表示になりました (resignFirstResponder)。しかし、backgroundTap を実装すると、didSelectRowAtIndexPath の呼び出しが発生しなくなりました。

ユーザーがいくつかの uitableviewcell をタップすると、backgroundTap ではなく didSelectRowAtIndexPath が呼び出されるようにするにはどうすればよいですか?

backgroundTap の私の実装は次のとおりです。

   -(void)backgroundTap:(UITapGestureRecognizer *)tapGR{
       //...some code here...
   }

viewWillAppear に次の行を追加しました。

[self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backgroundTap:)]];

ありがとう。

4

1 に答える 1

1

問題は、タップ ジェスチャ レコグナイザーが、テーブル ビュー用のタップを食べてしまうことです。didSelectRowAtIndexPath: not being calledを参照してください。

ジェスチャ レコグナイザーは、それがアタッチされているビュー (このself.view場合) だけでなく、そのビューのすべてのサブビューにビュー階層のずっと下まで適用されます。この場合、テーブル ビュー セルを含むすべてが含まれます。

解決策は、ジェスチャ認識デリゲート (iOS 5) または UIView gestureRecognizerShouldBegin:(iOS 6 のみ) を介して仲介することです。

于 2013-04-08T16:19:25.190 に答える