diff --git a/submodules/AuthorizationUI/Sources/AuthorizationSequenceCodeEntryController.swift b/submodules/AuthorizationUI/Sources/AuthorizationSequenceCodeEntryController.swift index f125c86064..0909886408 100644 --- a/submodules/AuthorizationUI/Sources/AuthorizationSequenceCodeEntryController.swift +++ b/submodules/AuthorizationUI/Sources/AuthorizationSequenceCodeEntryController.swift @@ -154,9 +154,9 @@ public final class AuthorizationSequenceCodeEntryController: ViewController { super.viewDidAppear(animated) if let navigationController = self.navigationController as? NavigationController, let layout = self.validLayout { - addTemporaryKeyboardSnapshotView(navigationController: navigationController, parentView: self.view, layout: layout) + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout) } - + self.controllerNode.activateInput() } @@ -215,6 +215,10 @@ public final class AuthorizationSequenceCodeEntryController: ViewController { if !hadLayout { self.updateNavigationItems() + + if let navigationController = self.navigationController as? NavigationController { + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout, local: true) + } } self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) @@ -263,18 +267,20 @@ public final class AuthorizationSequenceCodeEntryController: ViewController { } } -func addTemporaryKeyboardSnapshotView(navigationController: NavigationController, parentView: UIView, layout: ContainerViewLayout) { +func addTemporaryKeyboardSnapshotView(navigationController: NavigationController, layout: ContainerViewLayout, local: Bool = false) { if case .compact = layout.metrics.widthClass, let statusBarHost = navigationController.statusBarHost { if let keyboardView = statusBarHost.keyboardView { + keyboardView.layer.removeAllAnimations() if let snapshotView = keyboardView.snapshotView(afterScreenUpdates: false) { - keyboardView.layer.removeAllAnimations() UIView.performWithoutAnimation { snapshotView.frame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - snapshotView.frame.size.height), size: snapshotView.frame.size) - if let keyboardWindow = statusBarHost.keyboardWindow { + if local { + navigationController.view.addSubview(snapshotView) + } else if let keyboardWindow = statusBarHost.keyboardWindow { keyboardWindow.addSubview(snapshotView) } - Queue.mainQueue().after(0.5, { + Queue.mainQueue().after(local ? 0.8 : 0.7, { snapshotView.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak snapshotView] _ in snapshotView?.removeFromSuperview() }) diff --git a/submodules/AuthorizationUI/Sources/AuthorizationSequencePasswordEntryController.swift b/submodules/AuthorizationUI/Sources/AuthorizationSequencePasswordEntryController.swift index b4ba03969a..000a0a49db 100644 --- a/submodules/AuthorizationUI/Sources/AuthorizationSequencePasswordEntryController.swift +++ b/submodules/AuthorizationUI/Sources/AuthorizationSequencePasswordEntryController.swift @@ -90,7 +90,7 @@ final class AuthorizationSequencePasswordEntryController: ViewController { super.viewDidAppear(animated) if let navigationController = self.navigationController as? NavigationController, let layout = self.validLayout { - addTemporaryKeyboardSnapshotView(navigationController: navigationController, parentView: self.view, layout: layout) + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout) } self.controllerNode.activateInput() @@ -134,6 +134,10 @@ final class AuthorizationSequencePasswordEntryController: ViewController { if !hadLayout { self.updateNavigationItems() + + if let navigationController = self.navigationController as? NavigationController { + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout, local: true) + } } self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition) diff --git a/submodules/AuthorizationUI/Sources/AuthorizationSequenceSignUpController.swift b/submodules/AuthorizationUI/Sources/AuthorizationSequenceSignUpController.swift index fda1ef9855..8c8fdd8df9 100644 --- a/submodules/AuthorizationUI/Sources/AuthorizationSequenceSignUpController.swift +++ b/submodules/AuthorizationUI/Sources/AuthorizationSequenceSignUpController.swift @@ -216,7 +216,7 @@ final class AuthorizationSequenceSignUpController: ViewController { super.viewDidAppear(animated) if let navigationController = self.navigationController as? NavigationController, let layout = self.validLayout { - addTemporaryKeyboardSnapshotView(navigationController: navigationController, parentView: self.view, layout: layout) + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout) } self.controllerNode.activateInput() @@ -242,6 +242,10 @@ final class AuthorizationSequenceSignUpController: ViewController { if !hadLayout { self.updateNavigationItems() + + if let navigationController = self.navigationController as? NavigationController { + addTemporaryKeyboardSnapshotView(navigationController: navigationController, layout: layout, local: true) + } } self.controllerNode.containerLayoutUpdated(layout, navigationBarHeight: self.navigationLayout(layout: layout).navigationFrame.maxY, transition: transition)