【问题标题】:Fix - Keyboard moving the entire collection view up leaving up white space修复 - 键盘移动整个集合视图留下空白
【发布时间】:2018-08-19 06:53:57
【问题描述】:

在我的Collection ViewController 中有Collection View CelltextField。每次我按下textField 并且键盘出现时,view 都会向上移动,留下空白...

显示键盘之前 everything is ok

显示键盘后 cell layout is up... 并且您无法看到整个单元格内容。

我在下面尝试了一个答案解决方案,我得到了这个:black view on top

【问题讨论】:

    标签: ios swift layout uicollectionview


    【解决方案1】:

    您可以在键盘显示和隐藏时添加观察者,并相应地改变您的视图:

    override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    }
    
    @objc func keyboardWillShow(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            let newYOrigin = CGFloat(100) // or whatever new value you want
            self.yourView.frame.origin.y = newYOrigin
        }
    }
    
    @objc func keyboardWillHide(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
            let newYOrigin = CGFloat(0) // or whatever new value you want
            self.yourView.frame.origin.y = newYOrigin
        }
    }
    

    【讨论】:

    • 谢谢你的这种工作,因为是的,在键盘消失后单元格的布局是正确的,但是当首先显示键盘时,我确实在顶部看到了一个黑色视图,覆盖了视图的某些部分。查看我编辑的问题图片
    • 好的,当我将 newOrigin 设置为 1 时,我确实做对了……非常感谢!
    • 有时只有当我通过按 command + K 关闭键盘时,这不起作用。仅当按下“返回”或什么时,这有什么问题?