У меня есть частичный ответ, но не идеальный, и я сам не пробовал. Посмотрите документацию по протоколу UITextFieldDelegate.
Вы можете задать свой контроллер textField.delegate = self, а затем реализовать textFieldShouldBeginEditing, чтобы как-то показать вашу специализированную клавиатуру, а затем вернуть NO, чтобы он не переходил в режим редактирования. Когда вы говорите своей специальной клавиатуре показывать себя, передайте ей ссылку на текстовое поле, чтобы она знала, куда вставлять символы. Проблема в том, что это, вероятно, не будет показывать курсор и не позволит пользователю перемещать курсор для вставки символов и т. Д.
Так что на самом деле это немного уродливо, но этого может быть достаточно. AFAIK нет хорошего способа сделать это: (