在拖动时解除键盘高度等于0

时间:2017-12-23 22:06:04

标签: ios swift

我正在使用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
}

1 个答案:

答案 0 :(得分:1)

这是因为你使用UIKeyboardFrameEndUserInfoKey。 UIKeyboardFrameEndUserInfoKey包含一个CGRect,用于在屏幕坐标中标识键盘的结束帧(在您的情况下键盘将隐藏,因此高度将为0)。 因此,您应该使用UIKeyboardFrameBeginUserInfoKey。它包含一个CGRect,用于在屏幕坐标(隐藏之前)中标识键盘的起始帧。

相关问题