3

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

我尝试了以下方法:

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

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

4

5 回答 5

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];
于 2010-10-15T08:30:03.230 回答
2

你可以在-textFieldShouldBeginEditing:.

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

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

于 2009-11-11T06:08:47.203 回答
1

也许您不应该为此使用 UITextField 。使用普通的 UITableViewCell 并在点击时使用日期选择器推送新的 UIViewController。

于 2009-03-16T10:41:57.067 回答
1

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

我们尝试了一些东西,最终发现了很多非常可怕的代码和错误。

到目前为止,最简单的选择是仍然有一个UITextField,但将其设置.inputViewDatePicker

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

于 2011-03-04T04:52:45.157 回答
0

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

于 2009-03-16T12:37:22.343 回答