如何隐藏默认键盘

时间:2009-03-16 09:43:20

标签: iphone iphone-softkeyboard

我在表单上添加了5个UITextField。其中一个文本用于输入出生日期。因此,当触摸特定文本字段而不是显示默认键盘时,需要显示datepicker。

我尝试了以下内容:

- (void)textFieldDidBeginEditing:(UITextField *)textField{
   [textField resignFirstResponder];
   [self showDatePicker];//this is my own function to display datepicker.
}

当调用此函数时,将显示日期选择器,以及日期选择器,同时显示默认键盘并隐藏日期选择器。对于这个特定的textfiled,我不知道如何摆脱默认键盘。请帮帮我。

5 个答案:

答案 0 :(得分:3)

虽然这是一个老问题,但我在寻找同样的时候来到这里。

这适用于屏幕中显示的任何数量/嵌套视图

- (void) hideKeyboard: (UIView *) view {
    NSArray *subviews = [view subviews];
    for (UIView *subview in subviews){
        if ([subview isKindOfClass:[UITextField class]]) {
            [subview resignFirstResponder];
        }
        [self hideKeyboard: subview ];
    }
}

后来我找到了更直观的方法,

[self.view endEditing:YES];

答案 1 :(得分:2)

您可以在-textFieldShouldBeginEditing:

中处理此问题

如果此方法返回NO,则不会显示键盘。

只需在此方法中显示日期选择器,然后返回NO。

答案 2 :(得分:1)

也许你不应该为此使用UITextField。使用普通的UITableViewCell并在点击时使用datepicker推送新的UIViewController。

答案 3 :(得分:1)

我刚刚解决了同样的问题,

我们尝试了一些事情,并最终遇到了许多非常糟糕的代码和错误。

到目前为止,最简单的选择仍然是UITextField,但要将.inputView设置为DatePicker

现在我们正在尝试找到一种提交字段的好方法,因为选择器没有像键盘那样的返回按钮。

答案 4 :(得分:0)

辞职第一响应者应该隐藏键盘。我最好的猜测是textField实际上并不是代码中此时的第一个响应者,所以告诉它辞职没有任何效果。也许您应该插入一个NSLog语句来检查它。