我有一个UIVIew,它是一个子视图,它包含几个UITextFields。其中一个文本字段(用于 DATE)不应使用键盘进行编辑,而不是使用带有日期选择器的 PopOver。
当达到UIControlEventEditingDidBegin
时,我运行一个方法。此方法调用 DateTextField 上的resignFirstResponder
。
如果 DateTextField 是第一个要编辑的字段,则一切正常,但是当编辑另一个 textField 并且当然显示键盘然后尝试编辑 DateField 时,键盘不会隐藏,一切正常,但键盘会做任何事情。
我试图在resignFirstResponder
之前调用该方法endEditing:YES
但它不起作用。我尝试在didEndEditing
文本字段方法上运行endEditing:YES
和resignFirstResponder
,但没有办法取出该键盘。
这是我的方法:
- (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>