mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Smooth kbd dismiss: avoid bouncing CaptionView due to quick transition of firstResponder
This commit is contained in:
parent
b108f284bd
commit
3bfda7ea81
1 changed files with 16 additions and 1 deletions
|
@ -322,6 +322,7 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC
|
|||
}
|
||||
|
||||
var lastObservedKeyboardHeight: CGFloat = 0
|
||||
var firstObservedKeyboardHeight: CGFloat?
|
||||
|
||||
@objc
|
||||
func keyboardWillShow(notification: Notification) {
|
||||
|
@ -343,6 +344,9 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC
|
|||
Logger.debug("\(keyboardStartFrame) -> \(keyboardEndFrame)")
|
||||
|
||||
lastObservedKeyboardHeight = keyboardEndFrame.size.height
|
||||
if firstObservedKeyboardHeight == nil {
|
||||
firstObservedKeyboardHeight = keyboardEndFrame.size.height
|
||||
}
|
||||
|
||||
viewControllers?.forEach { viewController in
|
||||
guard let prepViewController = viewController as? AttachmentPrepViewController else {
|
||||
|
@ -699,6 +703,16 @@ extension AttachmentApprovalViewController: AttachmentPrepViewControllerDelegate
|
|||
//
|
||||
// For these cases we apply the observed `lastKnownBottomToolbar
|
||||
guard bottomToolView.mediaMessageTextToolbar.textView.isFirstResponder else {
|
||||
// 3. between dismissing the CaptionView and the ViewController regaining first
|
||||
// responder there is an instant where the lastObservedKeyboardHeight is effectively
|
||||
// 0. Rather than animate the CaptionView all the way to the bottom screen edge, and
|
||||
// then immediately back up as the inputAccessoryView becomes visible, we never inset
|
||||
// the CaptionView nearer to the bottom edge than it's initial position, which should
|
||||
// be the height of the inputAccessoryView.
|
||||
if let firstObservedKeyboardHeight = firstObservedKeyboardHeight {
|
||||
return max(firstObservedKeyboardHeight, lastObservedKeyboardHeight)
|
||||
}
|
||||
|
||||
return lastObservedKeyboardHeight
|
||||
}
|
||||
|
||||
|
@ -956,7 +970,8 @@ public class AttachmentPrepViewController: OWSViewController, PlayerProgressBarD
|
|||
}
|
||||
|
||||
let changeBlock = {
|
||||
self.captionViewBottomConstraint.constant = -prepDelegate.desiredCaptionViewBottomInset
|
||||
let offset: CGFloat = -1 * prepDelegate.desiredCaptionViewBottomInset
|
||||
self.captionViewBottomConstraint.constant = offset
|
||||
self.captionView.superview?.layoutIfNeeded()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue