如何隐藏文本框键盘当“完成/返回”按钮被按下Xcode 4.2

56

我在界面构建器中创建了一个文本字段。我将其“Return Key”设置为Done。这是仅有一行输入的字段(因此不需要多行)。

当用户点击完成按钮时,如何隐藏虚拟键盘?

3个回答

155

实现委托方法UITextFieldDelegate,然后:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.yourIBtextField.delegate = self;
}

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

17
我遗漏的部分是在*.h文件中的接口加入<UITextViewDelegate>。一旦我添加了这个,这段代码就可以正常工作了。希望能对其他人有所帮助! - proudgeekdad
7
在这种情况下需要使用 <UITextFieldDelegate>。 - brooNo
3
如果你从textField拖动连接到viewController表示形式,你也可以从Storyboard(xib)中连接委托。这样,你就不必编写viewDidLoad方法中的那一行代码了。 - lgdev

9

UITextView没有任何方法在用户按下回车键时被调用。

即使如此,如果您想要实现这个功能,请实现UITextViewDelegate的textView:shouldChangeTextInRange:replacementText:方法,并在其中检查替换文本是否为\n,然后隐藏键盘。

可能还有其他方法,但我不知道。

确保您声明支持UITextViewDelegate协议。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}

这会重置我的隐藏设置,你有什么想法为什么会这样吗? - John
请提供更多细节,比如哪种隐藏设置? - Himanshu padia

1
使用下面的方法在UIViewController上创建类别:
- (void)hideKeyboard
{
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
                                               to:nil
                                             from:nil
                                         forEvent:nil];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接