ツールバー付きのナビゲーションコントローラーがあります。キーボードが表示されたときにツールバーもキーボードの上に表示されるようにしました。キーボードを閉じると、ツールバーが消え、黒い四角形が画面の下部に残ります。これは、ツールバーがキーボードのない場所にあるはずです。
ツールバーを初期化する方法は次のとおりです。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setToolbarHidden:NO];
// this makes sure the toolbar appears on top of the keyboard
// instead of going below it.
// _nameText is a UITextField
_nameText.inputAccessoryView = self.navigationController.toolbar;
}
これは、キーボードを非表示にする方法です。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
[self.navigationController setToolbarHidden:NO]; // this doesn't help
return NO;
}
もやってみ[self.view setNeedsLayout]
ましたが、うまくいきませんでした。
編集:これは、ツールバーをテキストフィールドの入力アクセサリビューに割り当てているという事実に関係していると思われます。キーボードがなくなると、テキスト フィールドのアクセサリ ビューが非表示になると思います。ただし、その動作をオーバーライドする方法はまだわかりません。
編集 2:キーボードがなくなった後であることself.navigationController.toolbar.superview
がわかりました。nil