【问题标题】:Keyboard height not working properly in Swift键盘高度在 Swift 中无法正常工作
【发布时间】:2020-07-09 09:44:34
【问题描述】:

当键盘显示和隐藏时,我正在使用下面的代码来调整当前视图。当键盘显示代码时,代码工作,但当它隐藏视图移动滑动底部时,在顶部保留一个黑色空间。 如何解决?

@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
    }
}

【问题讨论】:

    标签: ios swift uiviewcontroller keyboard uiresponder


    【解决方案1】:

    您可以转换视图而不是分配给原点

    @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
    }
    

    【讨论】:

    • 谢谢它解决了。但我的方法中问题的根本原因是什么?
    • 实际上这是第一次面对这个问题,但似乎将值更改为原点会改变 UIView 的 frame.size,因此当您最小化 y 轴时,它会按该值切割视图
    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多