Вы устанавливаете текст в textFieldDidChange? Потому что, если вы это сделаете, уведомление textFieldDidChange будет запускаться снова, и текст снова устанавливается, и уведомление будет запускаться снова и так далее ...
Я тоже пытался это сделать. Единственное решение, которое я мог придумать, - это форматирование текста, когда пользователь покидает textField. Я не нашел способа надежного форматирования содержимого textField, пока пользователь его редактировал.