UIVIew endEditing:YES不会隐藏键盘

cho*_*ost 5 objective-c uitextfield first-responder ios ios5

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

UIControlEventEditingDidBegin到达时我运行一个方法.此方法调用resignFirstResponderDateTextField.

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

我试图在endEditing:YES之前调用该方法,resignFirstResponder但它不起作用.我试图运行endEditing:YES,并resignFirstResponderdidEndEditing文本字段的方法,但世界上没有办法让键盘出来.

这是我的方法:

- (void)showDatePopOver:(id)sender{ 
    [self.view endEditing:YES];

    UITextField *textField = (UITextField *)sender;
    [sender resignFirstResponder]; // hide keyboard

    /** POP OVER LINES**/
}
Run Code Online (Sandbox Code Playgroud)

cho*_*own 2

您应该使用textFieldShouldBeginEditing:委托方法而不是在以下位置放弃第一响应者didBeginEditing

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

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return (![textField isEqual:dateTextField]);
}
Run Code Online (Sandbox Code Playgroud)

您应该指定您的视图控制器是一个文本视图委托,如下所示(在接口声明 [.h 文件] 中):

@interface MyViewController : UIViewController <UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)