键盘隐藏在becomeFirstResponder之后

时间:2011-06-17 14:33:06

标签: ios cocoa-touch uikit uitextview becomefirstresponder

.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];

}

以下是截图:

frustration

2 个答案:

答案 0 :(得分:4)

我假设您已经确认在将视图放在屏幕上后调用了您的方法。

来自文档....

  

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

     

您可以将此方法称为   响应者对象如视图   急救人员。但是,你应该   只有在那个视图上调用它   视图层次结构的一部分。如果   view的窗口属性包含一个   UIWindow对象,它已经安装   在视图层次结构中;如果它返回   没有,视图脱离了任何一个   层次结构。

所以:

  1. 您可以确认调用方法时当前响应者是否可以重新签署第一响应者状态?

  2. 如果从屏幕截图显示,您的视图将显示在视图层次结构中。如果屏幕截图来自IB,则测试视图的窗口属性不是nil。

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

  4. 尝试添加[comment_text setNeedsDisplay]以强制重新刷新视图集作为第一响应者。

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

答案 1 :(得分:0)

当您修改链中某个对象的nextResponder时,也会发生此问题,因此响应者链不会转到UIWindow