我正在使用 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(隐藏之前)。