在 UINavigationController 中定义自定义过渡动画器时锚定键盘,如 iMessage 应用程序
Posted
技术标签:
【中文标题】在 UINavigationController 中定义自定义过渡动画器时锚定键盘,如 iMessage 应用程序【英文标题】:Anchor keyboard like iMessage app when define custom transition animator in UINavigationController 【发布时间】:2018-11-17 23:49:25 【问题描述】:我在导航控制器中创建了一个自定义推送/弹出转换。一切都很好,除了一个小事实:当我向后滑动时,键盘不会锚定到弹出的视图控制器。
这里有一些图片来展示正在发生的事情以及我想要什么。
只有当我使用 UInavigationControllerDelegate 方法替换标准动画师时才会发生这种情况。
public func navigationController(
_ navigationController: UINavigationController,
animationControllerFor operation: UINavigationController.Operation,
from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning?
return TransparentAnimator(operation: operation)
【问题讨论】:
【参考方案1】:UINavigationController 的默认视差转换使用私有方法(隐藏且只有 Apple 可以使用)来像这样移动键盘。
有些应用程序仍然这样做,例如 Facebook 的 Messenger。在玩过他们的过渡后,我 99% 确信他们正在为过渡拍摄键盘快照。如果键盘正在为某些东西设置动画,则动画将暂停(因为它是快照)。此外,由于他们正在关闭键盘以实现此效果,因此在取消动画时键盘将重置(因此,如果您在表情符号视图中,它将重置回字母)。
您可以在此处查看如何拍摄键盘快照:iPhone snapshot including keyboard
【讨论】:
感谢您的回答,听起来像是一个计划,但我怎么能在没有动画的情况下关闭键盘,以便用户不会注意到键盘被快照替换?以上是关于在 UINavigationController 中定义自定义过渡动画器时锚定键盘,如 iMessage 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?
从嵌入在 UINavigationController 中的一个视图控制器到另一个 UINavigationController
(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换
关闭 UINavigationController 并呈现另一个 UINavigationController
带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller