Как сделать собственную клавиатуру только для моего приложения в Swift?
Как сделать собственную клавиатуру только для моего приложения в Swift? Я не хочу, чтобы люди заходили в настройки, а затем добавляли клавиатуру. Я хочу, чтобы они могли использовать его немедленно, когда захотят в моем приложении. Никакой дополнительной работы не требуется.
Как реализовать это в Swift?
Многие ссылки говорят только о добавлении новой клавиатуры в настройках. Я не хочу этого
Я совсем новичок в интерфейсе, пожалуйста, дайте мне подробное объяснение.
1 ответ
Оба класса UITextField и UITextView, которые вы используете для ввода текста, имеют свойство inputView. Это свойство по умолчанию равно nil, но если вы предоставите ему представление, оно будет отображаться вместо обычной клавиатуры при редактировании этого текстового поля.
Чтобы реализовать это, создайте подкласс 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()
}
}
Теперь пользовательский вид клавиатуры будет использоваться везде, где вы используете этот подкласс.