Не уверен насчет смены языков (я нашел этот пост об этом: программно измените язык ввода OSx ), но смена клавиатуры довольно проста.Вот пример из одной строки:
textField.keyboardType = UIKeyboardTypeURL;
Посмотрите ссылку на протокол UITextInputTraits для получения дополнительной информации.Тогда возникает вопрос, где это реализовать.Я предполагаю, что вы хотите проверить условия непосредственно перед тем, как клавиатура появится, возможно, вам придется реализовать протокол UITextFieldDelegate (и, возможно, использовать тег поля, чтобы увидеть, в каком поле находится курсор).
Надеюсь, это поможет.