Objective c UIVIew编辑:是,不隐藏键盘
我有一个UIVIew,它是一个子视图,它包含几个UITextFields。其中一个文本字段(表示日期)不应使用键盘进行编辑,我使用的是带有日期选择器的PopOver 当到达Objective c UIVIew编辑:是,不隐藏键盘,objective-c,ios,ios5,uitextfield,first-responder,Objective C,Ios,Ios5,Uitextfield,First Responder,我有一个UIVIew,它是一个子视图,它包含几个UITextFields。其中一个文本字段(表示日期)不应使用键盘进行编辑,我使用的是带有日期选择器的PopOver 当到达uicontrolEventEditingDidBegen时,我运行一个方法。此方法调用DateTextField上的resignFirstResponder 如果DateTextField是第一个要编辑的字段,则一切正常,但当另一个textField被编辑时,当然会显示键盘,然后尝试编辑DateField,键盘不会隐藏,一切
uicontrolEventEditingDidBegen
时,我运行一个方法。此方法调用DateTextField上的resignFirstResponder
如果DateTextField是第一个要编辑的字段,则一切正常,但当另一个textField被编辑时,当然会显示键盘,然后尝试编辑DateField,键盘不会隐藏,一切正常,但键盘会执行任何操作
在辞职firstresponder
之前,我尝试调用方法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**/
}
您应该使用
文本字段shouldbeginediting:
委派方法,而不是在didBeginEditing
中辞职第一响应者:
这将允许编辑除dateTextField
文本字段以外的所有字段:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return (![textField isEqual:dateTextField]);
}
您应该指定视图控制器是一个文本视图委托,就像这样(在接口声明[.h文件]中):
@接口MyViewController:UIViewController
非常感谢,它现在可以工作了。我还必须将事件uicontrolEventEditingDiBegin更改为UIControlEventTouchDownCool,很高兴您修复了它!快乐编码。
@interface MyViewController : UIViewController <UITextFieldDelegate>