shouldChangeCharactersInRange
вызывается до того, как произойдет изменение, и дает вам возможность «отменить» изменение. UIControlEventEditingChanged
вызывается после изменения.
Вы можете определить результирующее значение textField в shouldChangeCharactersInRange
, но вам нужно вручную применить replaceString к существующему тексту, используя предоставленный диапазон. (через NSString stringByReplacingCharactersInRange
). Если вы хотите узнать полученный текст, проще и эффективнее использовать UIControlEventEditingChanged
.
shouldChangeCharactersInRange
часто используется для проверки правильности ввода - то есть вы можете фильтровать символы / вставленный текст по мере ввода. Например, если поле предназначено для телефонных номеров, вы можете вернуть FALSE
, если пользователь вводит не числовой символ или пытается вставить текст, который не является числовым.
Вы можете найти случай, когда вы можете повторно использовать код для нескольких элементов управления, если вы можете придерживаться UIControlEvent-methods.