有没有人注意到在按下清除按钮后UITextField
调用textFieldDidEndEditing
但text
属性仍有旧数据?
我不确定我在这里提供的代码示例。如果重要的话,我正在使用故事板。
现在我必须依赖从主窗体的“提交”按钮的所有编辑控件中获取数据。但理想情况下,我更愿意在textFieldDidEndEditing
处理程序中收集数据。
有没有更好的解决方法?
我在iOS 6上。
更新:基本上这就是我在表单上的内容
UITextField
和UiButton
在表单上。resignFirstResponder
UITapGestureRecognizer
来调用键盘
重现问题的步骤:
textFieldDidEndEditing
被调用。属性.text
具有我输入的值。一切都好。textFieldDidEndEditing
。但是属性.text
仍然具有我刚删除的价值!textFieldDidEndEditing
从未调用过键盘被解雇。明天我将在GitHub上传示例项目。
答案 0 :(得分:5)
我遇到了完全相同的问题。在我的情况下,至少,这是由于向UITapGestureRecognizer
添加self.view
(如果在UITextField
之外点击允许解雇键盘)并设置{{ 1}}在手势识别器上。我已经设置了该属性,以便在视图中的其他地方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];
(处理通知)
行为方面唯一的问题是,当显示键盘时,超链接仍然不起作用:触摸它只会解除键盘,而不是将触摸转发给链接处理程序。但我可以忍受这一点。键盘解除后,链接正常。
答案 1 :(得分:1)
首先检查UITextFieldDelegate
是否已分配,然后
实现textFieldShouldClear
委托并在此处编写代码,清除textField
要执行此操作,您必须设置clearButtonMode
属性
yourTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
yourTextField.delegate = self;
然后实施textFieldShouldClear
委托
.h文件
@interface myViewController: UIViewController <UITextFieldDelegate>{
}
.m文件
-(BOOL)textFieldShouldClear:(UITextField *)textField
yourTextFeild.text = @"";
return YES;
}
答案 2 :(得分:-1)
试试这里:
-(BOOL) textFieldShouldReturn:(UITextField*) textField