【问题标题】:How can I make an unknown UITextField resign first responder?如何让未知的 UITextField 辞职第一响应者?
【发布时间】:2011-05-04 13:31:42
【问题描述】:

我的视图有两个UITextFields 和一个UISwitch。如果用户正在编辑textField,然后立即触摸开关(不按回车键),文本将在他们键入时留下,没有AutoCorrect

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

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

【问题讨论】:

  • 你能在两个文本字段上调用 ​​resignFirstResponder 吗?

标签: iphone cocoa-touch uitextfield uiswitch


【解决方案1】:

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

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

【讨论】:

  • 也许马丁 ment:[self.view endEditing:YES];
  • @JPK:可以,但你必须考虑到 enreases 评论
  • @rokjarc 对我来说也不起作用(至少在UITableViewController 中)。但是 jebins 解决方案就像魅力一样,然后
【解决方案2】:

用下面的替换[self.view endEditing:YES]...

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

【讨论】:

  • 当应用程序中的任何视图都可能是可见视图时非常有用。
【解决方案3】:

为正在进行编辑的文本字段调用uitextfielddelegate 方法。这样您就不必面临检测正在编辑哪个文本字段的问题。

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

你应该感兴趣的方法是:

textFieldDidEndEditing:

告诉代理指定文本字段的编辑已停止。

- (void)textFieldDidEndEditing:(UITextField *)textField

参数

textField
编辑结束的文本字段。

讨论

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

可用性

适用于 iOS 2.0 及更高版本。

声明于

UITextField.h

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多