Как создать пользовательскую клавиатуру только для моего приложения в Swift?

Как сделать пользовательскую клавиатуру только для моего приложения в Swift? Я не хочу, чтобы люди шли в настройку, а затем добавляли клавиатуру. Я хочу, чтобы они могли использовать его сразу же, когда захотят его в своем приложении. Никакой дополнительной работы не требуется.

Как реализовать это в Swift?

Многие ссылки говорят только о добавлении новой клавиатуры в настройках. Я не хочу этого.

Я совершенно новый для UI, пожалуйста, дайте мне подробное объяснение.

Ответ 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()
    }
}

Теперь пользовательский вид клавиатуры будет использоваться везде, где вы используете этот подкласс.