GoogleとStackoverflowで何時間も検索しましたが、運が良かったです。UITapGestureRecognizerでdidSelectRowAtIndexPathメソッドを呼び出す方法は?
私はUITableView tblDepartment
とその上にUISearchBar studentSearch
を持っています。
は、私は、ユーザーが検索ボックスの外側をタップしたときにstudentSearch
テキストボックスからキーボードを閉じUITapGestureRecognizer
を追加します。私はtblDepartment
内の行を選択すると
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tblDepartment addGestureRecognizer:gestureRecognizer];
- (void)hideKeyboard
{
[studentSearch resignFirstResponder];
}
その後、方法didSelectRowAtIndexPath:(NSIndexPath *)indexPath
はもう呼ばれていません。私はgestureRecognizer
が理由を知っています。
キーボードを非表示にして、ユーザーが行を選択できるようにするにはどうすればよいですか?
私はこのコードを試してみましたが、それはうまくいきませんでした:GRはそのジェスチャーを認識した場合NOにジェスチャー認識のcancelsTouchesInViewプロパティを設定し
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:tblDepartment]) {
return NO;
}
return YES;
}
ジェスチャ認識機能を削除して、最初のレスポンダを 'tableView:didSelectRowAtIndexPath:'から辞めることができますか? – dasblinkenlight
'resignFirstResponder'の後にジェスチャーレコグナイザを削除してみてください。 – ohr
@ dasblinkenlight:ご意見ありがとうございます。 'tblDepartment'には約7行があり、表示時にキーボードが重なっています。私はユーザーが検索したくない行を選択できるようにしたいと思います:)そのため、検索ボックスの外をタップすると、キーボードは閉じられ、下の行を選択できます。 –