1

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

4

3 回答 3

2

您的控制器需要实现(参考)的textFieldShouldReturn:方法:UITextFieldDelegate

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

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

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

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

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

于 2011-01-12T03:57:39.787 回答
2

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

在此处查看 Apple 的文档

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

于 2011-01-12T03:13:52.117 回答
1

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

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

在 [myTextField resignResponder] 之后,我立即调用了 [dummyTextField becomeFirstResponder]。所以键盘还活着,而用户看不到 dummyTextField。

我相信有更好的方法来做到这一点。但是我这样做了,而且效果很好。

于 2011-01-12T02:41:24.467 回答