我在UIView中使用-(BOOL)endEditing:(BOOL)force
方法来结束视图中文本字段的编辑,并发现了一些意外行为。
我创建了一个简单的测试程序,带有UITextField和两个UIButtons。一个按钮调用[self.view endEditing:YES]
以强制编辑结束,而另一个按钮调用[self.view endEditing:NO]
以结束编辑,而不强制。
File是textfield的委托,我在其中放了一个简单的日志语句
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
方法。
以下是按钮和文本字段委托的代码:
-(IBAction)doEndEditingForced:(id)sender {
NSLog(@"==========================");
NSLog(@"In doEndEditingForced");
[self.view endEditing:YES];
}
-(IBAction)doEndEditingNotForced:(id)sender {
NSLog(@"==========================");
NSLog(@"In doEndEditingNotForced");
[self.view endEditing:NO];
}
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"ShouldEndEditing");
return YES;
}
这是我得到的输出:
2011-10-03 15:36:22.153 Test[94596:207] ==========================
2011-10-03 15:36:22.155 Test[94596:207] In doEndEditingForced
2011-10-03 15:36:22.156 Test[94596:207] ShouldEndEditing
2011-10-03 15:36:26.145 Test[94596:207] ==========================
2011-10-03 15:36:26.146 Test[94596:207] In doEndEditingNotForced
2011-10-03 15:36:26.147 Test[94596:207] ShouldEndEditing
2011-10-03 15:36:26.148 Test[94596:207] ShouldEndEditing
如果调用endEditing
且force
参数等于YES
,为什么要调用textFieldShouldEndEditing
方法,并且在调用endEditing
时force
参数等于NO
,为什么textFieldShouldEndEditing
方法被调用两次?
答案 0 :(得分:2)
这是因为endEditing方法不会为您的UITextField或UITextView调用任何委托方法只是隐藏您视图中的键盘。