如何让未知的UITextField辞职第一响应者?

时间:2011-05-04 13:31:43

标签: iphone cocoa-touch uitextfield uiswitch

我的观点有两个UITextFields和一个UISwitch。如果用户正在编辑textField,然后立即触摸开关(不按返回),则文本会在键入时保留,而不会显示AutoCorrect

如果我知道他们输入了哪个textField,我可以通过调用[textField resignFirstResponder]强制完成自动更正。但是用户可能正在输入textField,所以我不知道要拨打哪一个。

我该如何解决这个问题?有没有办法检测哪个textField被使用?或者更简单的我没有想到的东西?

4 个答案:

答案 0 :(得分:9)

这样做的一种可爱方式,无需跟踪哪个字段处于活动状态:

// This causes the current responder (eg. an input field) to resignFirstResponder and
[self.endEditing:YES];

答案 1 :(得分:6)

[self.view endEditing:YES]替换为以下内容......

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

答案 2 :(得分:2)

为正在进行编辑的文本字段调用uitextfielddelegate方法。因此,您无需面对检测正在编辑哪个文本字段的问题。

因此,实现uitextfielddelegate方法并将文本字段的委托分配给实现方法的类,并处理其中的响应。

您应该感兴趣的方法是:

  

<强> textFieldDidEndEditing:

     

告诉委托,指定的文本字段已停止编辑。

     

- (void)textFieldDidEndEditing:(UITextField *)textField

     

<强>参数

     

textField
            编辑结束的文本字段。

     

<强>讨论

     

在文本字段重新启动其第一个响应者状态后调用此方法。您可以使用此方法更新委托的状态信息。例如,您可以使用此方法隐藏仅在编辑时可见的叠加视图。      委托实施此方法是可选的。

     

<强>状况

     

适用于iOS 2.0及更高版本。

     

声明

     

UITextField.h

答案 3 :(得分:0)

您可以使用textFieldDidBeginEditing委托跟踪自己哪一个是当前的。