0

我有一个模态显示的视图,其中包含 3 个标签。

第三个标签不应该是可编辑的,并且应该在点击它时显示一个 UIDatePicker,如果它显示则隐藏键盘。

所以我这样做了:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (textField == _birthdateTextField) {

        _birthdateDatePicker.hidden = NO;

        if ([_firstnameTextField isFirstResponder]) {
            NSLog(@"first");
            [_firstnameTextField resignFirstResponder];
        } else if ([_lastnameTextField isFirstResponder]) {
            NSLog(@"last");
            [_lastnameTextField resignFirstResponder];
        }

        return NO;
    }

    _birthdateDatePicker.hidden = YES;

    return YES;
}

我可以清楚地看到我的日志消息(“第一个”或“最后一个”,取决于最后一个聚焦的文本字段),但键盘仍然显示。

有人在弄清楚这里有什么问题吗?

4

2 回答 2

4

如果您将模态视图呈现为 UIModalPresentationFormSheet,答案在这里: 模态对话框不会关闭键盘

如果模态 ViewController 演示样式为 UIModalPresentationFormSheet,iPad 键盘将不会关闭

于 2013-01-25T21:01:09.847 回答
1

不必通过覆盖来完成这项复杂的工作,textFieldShouldBeginEditing您可以在某处执行此操作,例如viewDidLoad

_birthdateTextField.inputView = _birthdateDatePicker;

当您编辑生日文本字段时,日期选择器将替换键盘

于 2013-01-25T19:41:51.423 回答