将键盘放下,停止键盘上的“完成”按钮

时间:2011-01-12 02:12:46

标签: iphone objective-c cocoa-touch uitextfield iphone-softkeyboard

当我按下键盘上的完成按钮时,它会自动将键盘移开。我如何阻止它这样做?

3 个答案:

答案 0 :(得分:2)

确保将视图控制器设置为UITextField的委托,然后实现shouldEndEditing:方法。只需返回NO即可保持文本字段处于活动状态,并将键盘保持在屏幕上。

See Apple's docs here

当然,这可能不是最佳方法,但在阅读上述文档后,您应该能够找到正确的回调并适当地控制程序的流程。

答案 1 :(得分:2)

您的控制器需要实施textFieldShouldReturn:reference)的UITextFieldDelegate方法:

确保您的视图控制器已设置为文本字段的委托,可以通过Interface Builder或代码:

- (void) viewDidLoad
{
    self.someTextField.delegate = self;
}

然后,在视图控制器中,您需要实现textFieldShouldReturn:方法:

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
    return NO;
}

您指定的是在键盘上按下return(done)键时不会发生任何操作。正如其他人所提到的,奇怪的是,这正是默认行为。这意味着1)您在文本字段上调用resignFirstResponder,或者2)此文本字段位于UIWebView内,并祝您好运改变该行为。

答案 2 :(得分:1)

我有类似的情况。当[myTextField resignResponder]发生时,键盘消失了,但我只是想让键盘出现在屏幕上。

我刚刚在屏幕外创建了一个额外的UITextField实例,比如dummyTextField,它的框架是CGRectMake(-10,-10,5,5)。

在[myTextField resignResponder]之后,我立即调用[dummyTextField becomeFirstResponder]。因此键盘仍处于活动状态,而用户无法看到dummyTextField。

我相信有更好的方法。但我这样做了,它运作良好。