2012-07-30 4 views
6

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; 
} 
+0

ジェスチャ認識機能を削除して、最初のレスポンダを 'tableView:didSelectRowAtIndexPath:'から辞めることができますか? – dasblinkenlight

+1

'resignFirstResponder'の後にジェスチャーレコグナイザを削除してみてください。 – ohr

+0

@ dasblinkenlight:ご意見ありがとうございます。 'tblDepartment'には約7行があり、表示時にキーボードが重なっています。私はユーザーが検索したくない行を選択できるようにしたいと思います:)そのため、検索ボックスの外をタップすると、キーボードは閉じられ、下の行を選択できます。 –

答えて

14

、それはデフォルトではYESだ、それは根本的な見解に到達するのタッチを防止。

+1

すばらしい解決策。ありがとうございました。 '[gestureRecognizer setCancelsTouchesInView:NO];'それは動作します! –

+0

本当にあなたは私の時間を保存していただきありがとうございます:)私はこのように書いたtap.cancelsTouchesInView = NO; –

関連する問題