iOS:文本字段具有过滤器时,撤消会使应用程序崩溃

时间:2018-06-22 07:51:53

标签: ios crash shake nsundomanager nsrangeexception

我想分享我的经验,以便对他人有所帮助!

我们的应用程序中可能会有文本字段,用于显示特定的字符集。 我们可以通过实施

来过滤用户输入
[textField:shouldChangeCharactersInRange:replacementString:][1]

或通过注册UIControlEventEditingChanged事件

这可能会导致用户使用undo功能并且应用程序可能因NSRangeException而崩溃的情况。

解决问题的方法是,当我不希望将某些文本/字符添加到文本字段或粘贴到文本字段时,请确保删除undo操作。

例如,在实现[textField:shouldChangeCharactersInRange:replacementString:]时,我可能为不允许的字符返回NO。 在我执行之前

[textfield.undoManager removeAllActions];

这将确保用户无法撤消并且应用不会崩溃!

0 个答案:

没有答案