【问题标题】:Toolbar disappears when hiding keyboard隐藏键盘时工具栏消失
【发布时间】: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.superviewnil

【问题讨论】:

  • 尝试再次将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


【解决方案1】:

好的,虽然我无法正面解决问题,但我找到了一个可以接受的解决方法。

  1. 为您的工具栏创建一个 .xib

  2. 将工具栏从 (1) 加载到对象中

  3. 将该对象分配给文本字段的inputAccessoryView 属性

  4. 为此工具栏中的按钮设置目标和操作,以便您可以响应点击

现在一切就绪。您的原始工具栏(可能是您在 Interface Builder 中创建的)仅在键盘隐藏时可见。当键盘可见时,无法看到原始工具栏,但您的另一个工具栏(使用上述步骤创建)现在出现在键盘上方。宾果游戏!

如果有人对此问题有更优雅的解决方案,我会很高兴听到 :)

【讨论】:

  • 这两个工具栏之间什么时候需要同步是很重要的。
【解决方案2】:

@BlackRider,我遇到了和你一样的问题。很烦人。

我不想设置 2 个不同的工具栏作为解决方法,因为我不想在 2 个不同的地方处理工具栏按钮的状态。

我已经使用了在使用通知的答案中讨论的方法:iPhone: How to fix inputAccessoryView to View?

一切正常 - 我的直觉是在尝试各种设备尺寸/方向时会遇到问题。

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2018-02-22
    • 2023-02-12
    • 1970-01-01
    相关资源
    最近更新 更多