56

我在 Interface Builder 中创建了一个文本字段。我将它的“返回键”设置为完成。这是仅一行的输入(因此不需要多行)。

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

4

3 回答 3

155

实现委托方法UITextFieldDelegate,然后:

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

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}
于 2012-06-09T23:39:11.080 回答
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;
}
于 2012-10-25T13:23:07.003 回答
1

使用 next 方法在 UIViewController 上创建类别

- (void)hideKeyboard
{
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
                                               to:nil
                                             from:nil
                                         forEvent:nil];
}
于 2015-06-14T17:57:10.817 回答