Смена раскладки клавиатуры происходит черной линией - PullRequest
0 голосов
/ 17 апреля 2020

Я двигаюсь вверх по представлению, когда появляется клавиатура.

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

@objc func keyboardWillShow(notification: Notification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if self.view.frame.origin.y == 0{
            self.view.frame.origin.y -= keyboardSize.height
        }
    }
}

@objc func keyboardWillHide(notification: Notification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if self.view.frame.origin.y != 0 {
            self.view.frame.origin.y += keyboardSize.height
        }
    }
}

Но при смене языка, нажав на значок глобуса внизу клавиатуры и когда язык не английский sh Появляется черная линия.

enter image description here

Есть ли способ предотвратить эту черную линь при отображении предложений для английского языка sh, а не для других языков?

1 Ответ

0 голосов
/ 17 апреля 2020

Полагаю, проблема в том, что клавиатура фактически меняет свой кадр при переключении на другой макет.

Зарегистрируйтесь на UIResponder.keyboardDidChangeFrameNotification и обновите свой кадр соответствующим образом.

Подробнее На это уведомление доступны здесь: https://developer.apple.com/documentation/uikit/uiresponder/1621619-keyboarddidchangeframenotificati

...