Ответ 1
В классах UITextField и UITextView, которые используются для ввода текста, есть свойство inputView. По умолчанию это свойство равно нулю, но если вы предоставите ему представление, это представление появится вместо обычной клавиатуры при редактировании этого текстового поля.
Чтобы реализовать это, создайте подкласс UIView, который настраивает пользовательскую раскладку клавиатуры. Затем, когда вы используете текстовое поле или текстовое представление в своем приложении, вы должны установить его отдельно для каждого поля, как показано ниже:
let myCustomKeyboard = MyCustomKeyboardView()
myTextField.inputView = myCustomKeyboard
Чтобы это, теперь ваше текстовое поле использует специальную клавиатуру, которую вы предоставили.
Поскольку вы хотите использовать клавиатуру по всему миру в своем приложении, а клавиатура должна быть установлена отдельно для каждого текстового поля или текстового представления, это решение приведет к большому дублированию кода. Поскольку дублирование кода широко считается плохим, в вашем случае лучшая реализация будет заключаться в подклассе UITextField или UITextView (в зависимости от того, какой из них вы используете, очевидно), и установите клавиатуру в конструкторе:
class MyCustomKeyboardTextField: UITextField {
override init() {
super.init()
setupCustomKeyboard()
}
required init(coder: aCoder) {
super.init(aCoder)
}
override func awakeFromNib() {
setupCustomKeyboard()
}
func setupCustomKeyboard() {
// Set the custom keyboard
self.inputView = MyCustomKeyboardView()
}
}
Теперь пользовательский вид клавиатуры будет использоваться везде, где вы используете этот подкласс.