我有一个带有工具栏的导航控制器。当键盘出现时,我让工具栏也出现在键盘的顶部。当我关闭键盘时,工具栏消失,在屏幕底部留下一个黑色的矩形,工具栏应该没有键盘。隐藏键盘时工具栏消失
下面是如何初始化工具栏:
- (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
键盘消失后。
尝试再次将'self.navigationController.toolbar'添加到视图(无键盘)。 – tipycalFlow 2012-04-05 05:28:35
试过了,不起作用。工具栏:(1)出现在屏幕的顶部,(2)瞬间消失。我试过'[self.view addSubview:self.navigationController.toolbar]'。 – Macondo2Seattle 2012-04-05 05:32:13
看起来您已将工具栏移出可见性。请将您的代码发布到虚拟键盘上方以及隐藏键盘时移动工具栏。在隐藏键盘后,您可以尝试'NSLog'工具栏的框架 – tipycalFlow 2012-04-05 05:44:31