3

在将其.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];

}

这是一个屏幕截图:

挫折

4

2 回答 2

4

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

从文档....

仅当当前响应者可以放弃第一响应者状态(canResignFirstResponder)并且新响应者可以成为第一响应者时,响应者对象才会成为第一响应者。

您可以调用此方法以使响应者对象(例如视图)成为第一响应者。但是,如果它是视图层次结构的一部分,您应该只在该视图上调用它。如果视图的 window 属性包含一个 UIWindow 对象,则它已安装在视图层次结构中;如果它返回 nil,则视图与任何层次结构分离。

所以:

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

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

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

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

如果这些都不起作用,请发布更多代码(例如从哪里调用该方法)。

于 2011-06-21T03:19:33.513 回答
0

当你修改nextResponder链中的某个对象时也会出现这个问题,使响应者链不去UIWindow

于 2013-03-24T13:56:50.860 回答