【问题标题】:Keyboard hidden after becomeFirstResponderbecomeFirstResponder 后隐藏的键盘
【发布时间】:2011-06-17 14:33:06
【问题描述】:

在将 UITextView 的 .hidden 属性设置为 NO 后,我将焦点放在了 UITextView 上。当我设置 [textView becomeFirstResponder] 时,textView 会获得小的打字光标,但键盘仍然隐藏。知道为什么吗?如果有帮助,主视图是 UINavigationController 呈现的模式视图。

编辑:这是被调用的方法:

- (void)show_comment_elements {

    toolbar.hidden = YES;
    main_table.hidden = YES;
    add_comment_table.hidden = NO;
    comment_text.hidden = NO;

    [comment_text becomeFirstResponder];

}

截图如下:

【问题讨论】:

  • 一些代码也很有用
  • 这是否有帮助 - bcaccinolo.wordpress.com/2010/12/28/… - 假设您的模态视图控制器正在被推动并且您希望键盘立即显示。
  • 你是如何解决这个问题的?我遇到了类似的问题,发布您的解决方案会有所帮助

标签: ios cocoa-touch uikit uitextview becomefirstresponder


【解决方案1】:

我假设您已验证您的方法在视图放置在屏幕上后被调用。

来自文档....

响应者对象只会成为 第一响应者,如果当前 响应者可以辞职 第一响应者 状态(canResignFirstResponder)和 新的响应者可以成为第一个 响应者。

你可以调用这个方法来制作一个 响应者对象,例如视图 急救人员。然而,你应该 仅在该视图上调用它 视图层次结构的一部分。如果 视图的 window 属性持有一个 UIWindow 对象,已安装 在视图层次结构中;如果它返回 nil,视图与任何 层次结构。

所以:

  1. 您能否确认当前响应者在调用您的方法时可以放弃第一响应者状态?

  2. 如果从屏幕截图中显示,您的视图似乎在视图层次结构中。如果屏幕截图来自 IB,则测试视图的 window 属性是否为 nil。

  3. 确保视图可编辑 -- if(comment_text.isEditable) 否则它将不接受第一响应者状态。

  4. 尝试添加 [comment_text setNeedsDisplay] 以强制重新刷新,并将视图设置为第一响应者。

如果这些都不起作用,请发布更多代码(例如调用方法的位置)。

【讨论】:

    【解决方案2】:

    当您修改链中某些对象上的nextResponder时也会出现此问题,因此响应者链不会转到UIWindow

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 2011-08-29
      • 2014-11-06
      • 2015-12-20
      • 1970-01-01
      • 2022-01-23
      • 2010-10-01
      • 2014-06-08
      • 1970-01-01
      相关资源
      最近更新 更多