gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:30:06 24 4
gpt4 key购买 nike

有没有人注意到 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com