我有一个 UITextFieldDelegate 对用户输入进行大量验证以确定是否应该允许他们结束编辑。在一个特定示例中,将该字段留空是无效的。
现在,我textField:shouldChangeCharactersInRange:replacementString:
用于在用户每次编辑后验证文本输入。
问题是这样的:如果用户清除该字段(使用小“x”按钮),验证代码将进入“无效”模式并阻止用户导航,直到他们输入有效文本。如果用户然后摇动电话以取回旧文本,shouldChangeCharactersInRange
则不会再次呼叫,并且代表停留在“无效”状态,而不是再次认识到一切都很好。
不确定我是否正确使用它,但似乎内置的 UITextFieldDelegate 机器无法处理由于撤消/重做而导致的文本更改。
在这种情况下实现正确验证的最佳方法是什么?我真的需要继承 UITextField 才能实现motionEnded:withEvent:
吗?似乎 UITextField 中的编辑处理内容应该真正独立于用户是否实际键入它或者它是由于撤消而发生的,所以如果我真的不得不走那条路,我会很沮丧。