ios - 键盘高度在 Swift 中无法正常工作

标签 ios swift uiviewcontroller keyboard uiresponder

我使用下面的代码在键盘显示和隐藏时调整当前 View 。当键盘显示代码时,代码可以工作,但是当隐藏 View 时, View 会滑动底部,并在顶部保留黑色空间。 如何解决?

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

最佳答案

您可以变换 View 而不是分配给原点

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

关于ios - 键盘高度在 Swift 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60906562/

相关文章:

ios - UIView的居中坐标原点

ios - 在 Storyboard中重用 UIViewController?

iphone - 为什么我的 cocos2d box2d 项目中的第二个球没有弹跳?

iphone - 突出显示 UIAlertView 中的顶部按钮

ios - 'init' 不可用 :use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type

swift - 将框架添加到框架项目后单元测试失败

ios - Swift 的惰性变量

ios - 使用具有协议(protocol)继承的泛型类在归档应用程序时出现 Segmentation failure 11 错误

objective-c - 触摸 UIButton 并在 UIView 或 UIViewController 上显示 Unity

iOS - Google Analytics 委托(delegate)方法未被调用且页面 View 未跟踪