アプリのナビゲーションバーで UISearchBar オプションを作成しています。私のアプリは、複数のビューとサブビューで構成されています。私はこのメインビューを持っています。これには、彼自身に関する他の 3 つのビューがあります。そのうちの1つは空です(今のところ)他の2つはテーブルビューを持っています。
検索中にキーボードを表示し、実際の検索を行っているとき、または uisearchbar の外側をタッチ/クリックしたときにキーボードを非表示にしたい。必要に応じて searchbardelegate を使用しています。
次の方法で [searchBar rejectFirstResponder] を使用してキーボードを非表示にできます。
- リターンキーを押したとき。
- 検索を手動でキャンセルした場合
- キーボードのボタンを押して検索またはキャンセルしたとき。
を使用して画面の空白部分をタッチすると
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [[event allTouches] anyObject]; if ([mySearchBar isFirstResponder] && [touch view] != mySearchBar) { [mySearchBar resignFirstResponder]; } [super touchesBegan:touches withEvent:event]; }
私ができないように見えるのは、2つのテーブルビューの1つに触れることに応答させることです。または、メインビューを補充して、まったく異なるものを含める場合。
テーブルビューに触れたときに検索バーを辞任するために touchesbegan メソッドを変更しようとしましたが、今のところうまくいきません。
親愛なる友人のミスターが見つけた他のいくつかのことを試しました。グーグル、しかしそれはすべて私が必要とするものとは違うようです。
この問題を解決するために私ができることについて何か考えがある人はいますか?
編集: ブレークポイントを使用すると、touchesbegan-method が backgroundview に応答するように見えますが、テーブルビューまたはナビゲーションバー (uisearchbar を含む) のいずれかに触れても応答しません。