Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private class func handlePan(_ recognizer: UIPanGestureRecognizer) {
- switch recognizer.state {
- case .began:
- panStartY = recognizer.location(in: appDelegateWindow).y
- panPeviousY = panStartY
- panShouldIgnoreEndedState = true
- keyboardStartY = keyboardFrame.origin.y
- textEffectsView.window!.isUserInteractionEnabled = false
- remoteView?.window?.isUserInteractionEnabled = false
- case .changed:
- let distance = keyboardStartY - panStartY
- let currentY = recognizer.location(in: appDelegateWindow).y
- let deltaY = currentY - distance - panStartY
- let adjustment = min(max(keyboardStartY + deltaY, calculatedKeyboardStartY), appDelegateWindow.frame.height)
- keyboardFrame.origin.y = adjustment
- panIsMovingDown = currentY > panPeviousY
- panPeviousY = currentY
- panShouldIgnoreEndedState = deltaY <= 0
- case .ended:
- if panShouldIgnoreEndedState {
- return
- }
- panGestureRecognizer.isEnabled = false
- textEffectsView.window!.isUserInteractionEnabled = true
- remoteView?.window?.isUserInteractionEnabled = true
- let initialFrame = keyboardFrame
- var finalFrame = initialFrame
- finalFrame.origin.y = panIsMovingDown ? appDelegateWindow.frame.height : calculatedKeyboardStartY
- UIView.animate(withDuration: defaultAnimationDuration, delay: 0, options: defaultAnimationCurve, animations: {
- keyboardFrame = finalFrame
- }, completion: { _ in
- panGestureRecognizer.isEnabled = true
- delegateKeyboardDidHide(KSKeyboardInfo(initialFrame: initialFrame, finalFrame: finalFrame))
- textEffectsView.isHidden = true
- remoteView?.window?.isHidden = true
- appDelegateWindow.endEditing(true)
- })
- case .cancelled, .failed:
- textEffectsView.window!.isUserInteractionEnabled = true
- remoteView?.window?.isUserInteractionEnabled = true
- keyboardFrame.origin.y = calculatedKeyboardStartY
- default:
- ()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement