Skip to content

Commit 2f7b392

Browse files
committed
fix: ignore floating keyboard
1 parent bfc242a commit 2f7b392

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

Sources/KeyboardLayoutGuide/KeyboardLayoutGuide.swift

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,29 @@ extension UILayoutGuide {
179179

180180
extension Notification {
181181
var keyboardHeight: CGFloat? {
182-
guard let keyboardFrame = userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else {
182+
guard let keyboardEndFrame = userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else {
183183
return nil
184184
}
185185

186186
if name == UIResponder.keyboardWillHideNotification {
187187
return 0.0
188188
}
189189

190-
let keyboardMinY = keyboardFrame.cgRectValue.minY
190+
let keyboardMinY = keyboardEndFrame.cgRectValue.minY
191+
192+
let isLikelyFloating: Bool = {
193+
if keyboardMinY == 0 { return true }
194+
195+
guard let keyboardBeginFrame = userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue else {
196+
return false
197+
}
198+
199+
return keyboardBeginFrame.cgRectValue.minY == 0
200+
}()
201+
202+
if isLikelyFloating {
203+
return nil
204+
}
191205

192206
// Weirdly enough UIKeyboardFrameEndUserInfoKey doesn't have the same behaviour
193207
// in ios 10 or iOS 11 so we can't rely on v.cgRectValue.width

0 commit comments

Comments
 (0)