【发布时间】:2012-04-18 20:38:54
【问题描述】:
我有一个带有工具栏的导航控制器。当键盘出现时,我使工具栏也出现在键盘顶部。当我关闭键盘时,工具栏消失,在屏幕底部留下一个黑色矩形,就在工具栏应该没有键盘的地方。
我是这样初始化工具栏的:
- (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添加到视图(不带键盘)。 -
试过了,不行。工具栏:(1) 出现在屏幕顶部,(2) 瞬间再次消失。我试过
[self.view addSubview:self.navigationController.toolbar]。 -
您似乎已将工具栏移到不可见的地方。请发布您的代码以将工具栏移动到虚拟键盘上方以及隐藏键盘时。你可以试试
NSLogging 隐藏键盘后工具栏的框架 -
这一行:
_nameText.inputAccessoryView = self.navigationController.toolbar;是工具栏出现在键盘上方唯一要做的事情。隐藏键盘时我没有做任何特别的事情,只是[textField resignFirstResponder]。 -
如果
self.navigationController.toolbar.superview变成nil,那么我认为你已经解决了问题
标签: ios ios5 uinavigationcontroller uitoolbar