键盘高度等于0时被拖动时



我正在使用 collectionView?.keyboardDismissMode = .onDrag。键盘的解散效果很好。但是,如果将其"拖动"驳回,则高度打印等于0,这会在以后引起问题。有人可以解释我如何摆脱这一点吗?除此之外,我对为什么发生这种情况的原因非常感兴趣。

@objc func keyboardWillHide(notification: Notification) {
    guard let userInfo = notification.userInfo as NSDictionary? else {
        return
    }
    guard let keyboardFrame = userInfo.value(forKey: UIKeyboardFrameEndUserInfoKey) as? NSValue else {
        return
    }
    let keyboardRectangle = keyboardFrame.cgRectValue
    let keyboardHeight = keyboardRectangle.height
    print(keyboardHeight) //only prints 0 when dismissed on drag
    //do something with keyboard height
}

这是因为您使用uikeyboardFrameEnduserInfokey。uikeyboardframeEnduserInfokey包含一个cgggrect,该cgggrect标识了屏幕坐标中键盘的端帧(在您的情况下,键盘将隐藏起来,因此高度为0)。因此,您应该使用UikeyboardFrameBeginuserInfokey。它包含一个识别屏幕坐标中键盘的起始框的cgrect(隐藏之前)。

最新更新