UIVIew endEdit:YES 不会隐藏键盘



我有一个UIVIew,它是一个子视图,它包含几个UITextFields。其中一个文本字段(用于 DATE)不应使用键盘进行编辑,而不是使用带有日期选择器的 PopOver。

当达到UIControlEventEditingDidBegin时,我运行一个方法。此方法调用 DateTextField 上的resignFirstResponder

如果 DateTextField 是第一个要编辑的字段,则一切正常,但是当编辑另一个 textField 并且当然显示键盘然后尝试编辑 DateField 时,键盘不会隐藏,一切正常,但键盘会做任何事情。

我试图在resignFirstResponder之前调用该方法endEditing:YES但它不起作用。我尝试在didEndEditing文本字段方法上运行endEditing:YESresignFirstResponder,但没有办法取出该键盘。

这是我的方法:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES];
    UITextField *textField = (UITextField *)sender;
    [sender resignFirstResponder]; // hide keyboard
    /** POP OVER LINES**/
}

您应该使用 textFieldShouldBeginEditing: 委托方法,而不是在 didBeginEditing 中辞职第一响应者:

这将允许编辑除dateTextField文本字段之外的所有字段:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return (![textField isEqual:dateTextField]);
}

您应该指定您的视图控制器是文本视图委托,就像这样(在接口声明 [.h 文件] 中):

@interface MyViewController : UIViewController <UITextFieldDelegate>

最新更新