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

exp*_*ert 5 uitextfield ios uitextfielddelegate ios6

是否有人注意到按下清除按钮后UITextField调用textFieldDidEndEditing,但text属性仍有旧数据?

我不确定我能在这里提供什么代码示例.如果重要的话,我正在使用故事板.

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

有没有更好的解决方法?

我在iOS 6上.

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

  • UITextFieldUiButton在表格上.
  • 通过调用resignFirstResponder处理程序来调用键盘UITapGestureRecognizer

重现问题的步骤:

  • 单击编辑控件.输入一些文字.
  • 点击文本控件外部.
  • textFieldDidEndEditing叫做.财产.text有我输入的价值.都好.
  • 再次单击编辑控件.
  • 单击清除按钮.
  • textFieldDidEndEditing再次被召唤.但财产.text仍有价值我刚刚删除!
  • 现在,当您看到UITextField中的光标闪烁时,点击表单上的Button.
  • 键盘被解雇,textFieldDidEndEditing从未被调用过.

我明天将在GitHub上传示例项目.

T'P*_*Pol 5

我遇到了完全相同的问题.在我的情况下,至少,这是由于具有添加UITapGestureRecognizerself.view(以允许如果窃听的外驳回键盘UITextField)和设置cancelsTouchesInView=NO上的手势识别.我已经设置了该属性,以便TTTAttributesLabel在视图中的其他地方处理超链接.

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShowNotification:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHideNotification:) name:UIKeyboardDidHideNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

(注册通知)

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

- (void)keyboardDidHideNotification:(NSNotification *)notification
{
    tapGestureRecognizer.cancelsTouchesInView = NO;
}
Run Code Online (Sandbox Code Playgroud)

(处理通知)

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