UIViewController が 2 回目にナビゲーション コントローラにプッシュされたときに、UISearchBar がフォーカスを取得せず、キーボードが表示されないのはなぜですか? ビュー全体のどの要素にもフォーカスがないようです。
MY USE CASE : A と B の 2 つのビュー コントローラーがあります。遷移は A->B です。A、B はナビゲーション コントローラにプッシュされます。
- Bを初めて表示すると、フォーカスが検索バーに設定され、キーボードが表示されます。
- それから A に戻ります。そして、A->B から再び。今度はフォーカスがなく、キーボードが表示されません。違います。
MY CODE : B UIViewController で、検索バーへの IBOutlet 接続が作成されます。
@property (weak, nonatomic) IBOutlet UISearchBar *mySearchBar;
mySearchBar のデリゲートも設定されています。viewDidAppear
メソッドで B UIViewController の検索バーにフォーカスを設定します。
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self performSelector:@selector(setCorrectFocus) withObject:NULL afterDelay:0.2];
}
-(void) setCorrectFocus {
[self.mySearchBar becomeFirstResponder];
}
コントローラー間の遷移は、次のようなコードで手動で行われます。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
AController *a = [storyboard instantiateViewControllerWithIdentifier:@"A"];
[self.navigationController pushViewController:a animated:NO];