我有一个带有工具栏的导航控制器。当键盘出现时,我使工具栏也出现在键盘顶部。当我关闭键盘时,工具栏消失,在屏幕底部留下一个黑色矩形,就在工具栏应该没有键盘的地方。
这是我初始化工具栏的方式:
- (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
在键盘消失之后。