我正在使用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
}
答案 0 :(得分:1)
这是因为你使用UIKeyboardFrameEndUserInfoKey。 UIKeyboardFrameEndUserInfoKey包含一个CGRect,用于在屏幕坐标中标识键盘的结束帧(在您的情况下键盘将隐藏,因此高度将为0)。 因此,您应该使用UIKeyboardFrameBeginUserInfoKey。它包含一个CGRect,用于在屏幕坐标(隐藏之前)中标识键盘的起始帧。