检测UITextField文本因抖动撤消而改变的时间?

gle*_*enc 5 iphone uitextfield shake

我有一个UITextFieldDelegate,它对用户输入进行了大量验证,以确定是否允许它们结束编辑.在一个特定示例中,将该字段留空是无效的.

现在我textField:shouldChangeCharactersInRange:replacementString:用来在用户每次编辑后验证文本输入.

问题是:如果用户清除字段(使用小'x'按钮),验证代码将进入"无效"模式,并阻止用户导航,直到他们输入有效文本.如果用户随后摇动手机以取回旧文本,shouldChangeCharactersInRange则不会再次调用,并且代理处于"无效"状态,而不是再次识别出一切正常.

不确定我是否正确使用它,但似乎内置的UITextFieldDelegate机器无法处理因撤消/重做而导致的文本更改.

在这种情况下,实现正确验证的最佳方法是什么?我真的需要继承UITextField才能实现motionEnded:withEvent:吗?看起来像UITextField中的编辑处理内容实际上应该与用户是否实际键入它或者由于撤消而发生的事情无关,所以如果我真的不得不走这条路线就会感到沮丧.

小智 5

将方法连接到UIControlEventEditingChanged事件(IB中的"编辑已更改" - 而不是"值已更改").

只要文本字段发生变化,这似乎就会触发.