ios - 清除时 UITextField 调用 textFieldDidEndEditing 但 `text` 属性有数据

标签 ios ios6 uitextfield uitextfielddelegate

有没有人注意到 UITextField 在按下清除按钮后调用 textFieldDidEndEditingtext 属性仍然有旧数据?

我不确定我可以在这里提供什么代码示例。如果重要的话,我正在使用 Storyboard。

现在我必须依赖于从主窗体的“提交”按钮上的所有编辑控件获取数据。但理想情况下,我更愿意在 textFieldDidEndEditing 处理程序中收集数据。

有没有更好的解决方法?

我使用的是 iOS 6。

更新:基本上这是我在表格上的内容

  • UITextFieldUiButton 在表单上。
  • 通过在 UITapGestureRecognizer 的处理程序中调用 resignFirstResponder 关闭键盘

重现问题的步骤:

  • 点击编辑控件。输入一些文字。
  • 在文本控制之外点击。
  • textFieldDidEndEditing 被调用。属性 .text 具有我输入的值。一切都好。
  • 再次点击编辑控件。
  • 点击清除按钮。
  • 再次调用
  • textFieldDidEndEditing。但是属性 .text 仍然具有我刚刚删除的值!
  • 现在,当您看到光标在 UITextField 中闪烁时,点击表单上的按钮。
  • 键盘被 textFieldDidEndEditing 关闭,从未被调用。

我明天会在 GitHub 上上传示例项目。

最佳答案

我遇到了完全相同的问题。至少就我而言,这是由于添加了 UITapGestureRecognizer。至 self.view (允许在 UITextField 之外点击时关闭键盘)并设置 cancelsTouchesInView=NO在手势识别器上。我已经设置了该属性,以便在 TTTAttributesLabel 上获得超链接。我在 View 的其他地方。

我的解决方法是观察键盘显示和隐藏通知,并相应地切换该属性:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShowNotification:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHideNotification:) name:UIKeyboardDidHideNotification object:nil];

(注册接收通知)

- (void)keyboardDidShowNotification:(NSNotification*)notification
{
    tapGestureRecognizer.cancelsTouchesInView = YES;
}

- (void)keyboardDidHideNotification:(NSNotification *)notification
{
    tapGestureRecognizer.cancelsTouchesInView = NO;
}

(处理通知)

唯一的问题是,在行为方面,超链接在显示键盘时仍然不起作用:触摸它只会关闭键盘,不会将触摸转发给链接处理程序。但我可以忍受。关闭键盘后,链接正常。

关于ios - 清除时 UITextField 调用 textFieldDidEndEditing 但 `text` 属性有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651782/

相关文章:

ios - 标题 Collection View 中的分组数据

ios - SwiftUI View 内容布局意外弹出/跳转出现?

ios - 函数运行后比较变量 - Swift

ios - 是否可以在 Xcode 5 上安装 iOS 6 SDK?

ios - UITextField 像 safari 一样有进展

ios - 从 Swift 中的闭包返回多个 View 对象

iphone - iOS:适用于 4 英寸显示屏的图像

ios6 - iOS : Is there absolutely no way to build for armv6 in Xcode 4. 5?

ios - 如何忽略已在 swift 3 中计算的 UITextField 的值?

iOS - 将点击手势添加到 UITextField