Skip to content

Commit e1c3860

Browse files
committed
bugfix: space between keyboard and textfield.
1 parent e5e13aa commit e1c3860

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

Sources/KeyboardAvoider/KeyboardHandler.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ class KeyboardHandler:NSObject, ObservableObject, UIGestureRecognizerDelegate {
5252
}
5353
.store(in: &subscriptions)
5454

55-
keyboardWillShow
55+
let keyboardDidShow = NotificationCenter
56+
.default
57+
.publisher(for: UIResponder.keyboardDidShowNotification)
58+
59+
keyboardDidShow
5660
.sink {[weak self] _ in
5761
self?.adjustScrollViewOffsetYIfPossible()
5862
}
@@ -126,14 +130,12 @@ class KeyboardHandler:NSObject, ObservableObject, UIGestureRecognizerDelegate {
126130
let targetFrame = _activeView.convert(_activeView.bounds, to: nil)
127131
let targetY = targetFrame.maxY
128132
let containerY = UIScreen.main.bounds.height - keyboardHeight
133+
129134
if containerY < targetY {
130-
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
131-
_scrollview.setContentOffset(
132-
CGPoint(
133-
x: 0,
134-
y: _scrollview.contentOffset.y
135-
+ CGFloat(self.spaceBetweenKeyboardAndInputField)),
136-
animated: true)
135+
DispatchQueue.main.async {
136+
var newFrame = targetFrame
137+
newFrame.origin.y -= self.spaceBetweenKeyboardAndInputField
138+
_scrollview.scrollRectToVisible(newFrame, animated: true)
137139
}
138140
}
139141
}

0 commit comments

Comments
 (0)