UISearchBar を使用してコードで奇妙なことが起こっており、何が起こっているのかわかりません。私のアプリケーションでは、次のようにView Controllerを設定しています
ビュー コントローラー A ---> ビュー コントローラー B
View Controller A には、「ページ カール」ボタンを含むツールバーがあります。このボタンがタップされると、ページ カール トランジション スタイルでモーダル セグエを実行し、ビュー コントローラー B を表示します (これにより、実際には 2 つの別個のビュー コントローラーであるにもかかわらず、ビュー コントローラー B がビュー コントローラー A の下にあるという効果がユーザーに与えられます)。 . View Controller B には、「Find Near Address」というボタンがあります。ユーザーが「Find Near Address」をタップすると、シームレスに連続して発生する 2 つのアクションを探しています。
- まず、アンワインド セグエを実行したいと思います (ページ カール遷移を元に戻し、ビュー コントローラー A をビュー コントローラー B に戻します)。
- 次に、ビュー コントローラー B が消え、ビュー コントローラー A が再びメイン ビューになったら、ビュー コントローラー A の UISearchBar を最初のレスポンダーにします。つまり、検索バーに点滅するカーソルが表示され、キーボードがポップアップするはずです。 .
これまでのところ、巻き戻しセグエを正常に実行できましたが、View Controller A で UISearchBar をファーストレスポンダーとして設定しようとすると、キーボードがポップアップしません! 私は完全に道に迷っており、なぜこれが起こっているのかわかりません。
私が取ったアプローチは簡単です。ビュー コントローラー B のアンワインド セグエが戻り、ビュー コントローラー A の関数呼び出しにステップ インします(IBAction)returnToMainView:(UIStoryboardSegue *)segue.
。この関数内から呼び出し[self FindNearAddress]
ます。以下は FindNearAddress 関数です。
- (void)FindNearAddress {
[self.theSearchBar becomeFirstResponder];
}
次の UISearchBarDelegate メソッドも実装しました
- (void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
[self.theSearchBar setShowsCancelButton:YES animated:YES];
self.theSearchBar.text = @"";
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)theSearchBar {
self.theSearchBar.text=@"Please enter a custom address..";
[self.theSearchBar setShowsCancelButton:NO animated:YES];
[self.theSearchBar resignFirstResponder];
}
誰でも私を助けてくれますか/私が間違っていることを指摘してもらえますか? 「FindNearAddress」関数を呼び出すビュー コントローラー A にテスト ボタンを追加したことを指摘したいと思います。ビュー コントローラー B から戻る (巻き戻す) ときにのみ、キーボードがポップアップしません。最初のレスポンダーが設定されますが、何らかの奇妙な理由でキーボードがポップアップしません。