Можно фальсифицировать его с помощью указателей функции, и на самом деле, я думаю, что теоретически возможно скомпилировать программы C++ в C.
Однако редко имеет смысл вызывать парадигму на языке, а не выбирать язык, который использует парадигму.
Боюсь, вы не можете ограничить клавиатуру вводом только буквенных символов. Доступные типы клавиатуры перечислены в справочнике по протоколу UITextInputTraits и с еще более подробной информацией в файле заголовка:
typedef enum {
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
} UIKeyboardType;
Я чувствую, что в SDK отсутствует то, что вы хотите. Я бы отправил отчет об ошибке в Apple, запросив новый тип клавиатуры, подобный той, которую вы упомянули.
Какое решение для вас, кроме отправки отчета об ошибке и ожидания, когда ваш новый тип клавиатуры станет доступным в SDK? Проверка ввода в текстовое поле. Это можно сделать, назначив свойство делегата UITextField и реализуя метод UITextFieldDelegate textField: shouldChangeCharactersInRange: replaceString: и возвращая YES, только если строка замены не содержит чисел.
HTH