有人注意到按下清除按钮后UITextField
会调用textFieldDidEndEditing
,但是text
属性仍然具有旧数据吗?
我不确定我可以在这里提供什么代码示例。如果重要的话,我正在使用 Storyboard 。
现在,我必须依靠从主窗体的“提交”按钮上的所有编辑控件中获取数据。但理想情况下,我希望在textFieldDidEndEditing
处理程序中收集数据。
有更好的解决方法吗?
我在iOS 6上。
更新:基本上这就是我在表单上的内容
UITextField
和UiButton
在表单上。 resignFirstResponder
的处理程序中调用UITapGestureRecognizer
而放弃了键盘重现此问题的步骤:
textFieldDidEndEditing
被调用。属性.text
具有我输入的值。都好。 textFieldDidEndEditing
再次被调用。但是属性.text
仍然具有我刚刚删除的值! textFieldDidEndEditing
来关闭键盘。 我明天将在GitHub上上传示例项目。
最佳答案
我遇到了完全相同的问题。至少在我来说,这是由于在UITapGestureRecognizer
中添加了self.view
(如果在UITextField
之外点击则允许释放键盘)并在手势识别器上设置cancelsTouchesInView=NO
。我已经设置了该属性,以使超链接可以在 View 中其他位置的TTTAttributesLabel
上工作。
我的解决方法是观察键盘显示和隐藏通知,并相应地切换该属性:
[[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/