iOS: отмена сбоя приложения, когда в текстовом поле есть фильтр

Я хотел бы поделиться своим опытом, чтобы он мог помочь другим!

у нас может быть текстовые поля в нашем приложении, которые показывают определенный набор символов. мы фильтруем пользовательский ввод либо реализуя

[textField:shouldChangeCharactersInRange:replacementString:][1]

или путем регистрации UIControlEventEditingChanged событие

это может привести к ситуации, когда пользователь использует undo функция и приложение могут завершиться с NSRangeException.

То, как я решил это, я убираю undo действие, когда я не хочу, чтобы какой-либо текст / символ был добавлен в текстовое поле или вставлен в текстовое поле.

например, в реализации [textField:shouldChangeCharactersInRange:replacementString:] я мог бы вернуть НЕТ за не разрешенные символы. как раз перед этим я выполняю

[textfield.undoManager removeAllActions];

это гарантирует, что пользователь не сможет отменить, и приложение не упадет!

0 ответов

Другие вопросы по тегам