Высота клавиатуры не работает должным образом в Swift - PullRequest
1 голос
/ 28 марта 2020

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

@objc func keyboardWillAppear(notification: Notification){
    if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
        self.view.frame.origin.y = -keyboardHeight/2
    }
}

@objc func keyboardWillHide(notification: Notification){
    if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
        self.view.frame.origin.y = +keyboardHeight/2
    }
}

1 Ответ

1 голос
/ 28 марта 2020

Вы можете преобразовать вид вместо назначения источника

@objc func keyboardWillAppear(notification: Notification){
    if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
        self.view.transform = CGAffineTransform(translationX: 0, y: -keyboardHeight/2)
    }
}

@objc func keyboardWillHide(notification: Notification){
        self.view.transform = .identity
}
...