gpt4 book ai didi

ios - 在 iOS 7 中维护导航动画

转载 作者:行者123 更新时间:2023-11-29 13:02:12 24 4
gpt4 key购买 nike

iOS 中的 UITableViewController 包含用于行选择的微妙动画,从而在返回 View (通过后退按钮)时,先前选择的行会短暂突出显示。这为用户提供了在应用中的位置感。

对于 UIViewController,这种行为不是免费的。包含的简单方法是手动取消选择 viewWillAppear 中的选定行。

但是,iOS 7 允许用户在导航堆栈中向后“拖动”。部分拖动但未完成拖动操作将触发 viewWillAppear 并取消选择该行。当用户真正返回时,该行未被选中。

使用 viewDidAppear 肯定会解决这个问题,但是动画会在稍后触发(很明显)并且会使应用感觉迟钝。

有没有人想出办法解决这个问题?

最佳答案

我一直在考虑自己的解决方案。例如,当您查看 native 邮件应用程序实现的行为时,如果您单击后退按钮,取消选择动画在 viewDidAppear 之前开始,但它不在 viewWillAppear 中要么,因为当不以交互方式解散时,动画非常快速和突然。但是,当您在 viewWillAppear 上以交互方式取消和取消选择时,单元格会随着手指手势逐渐取消选择,就像 native 邮件应用程序一样。似乎 viewWillAppear 是在动画 block 内部调用的。根据实验,viewWillAppear 中的 performSelector:@selector(deselect)afterDelay:0 在单击返回动画时会产生所需的动画。

总结一下,当用户点击后退按钮时:performSelector:@selector(deselect) afterDelay:0 in viewWillAppear;当用户交互滑动以关闭时,在 viewWillAppear取消选择

那么如何区分这两种情况呢? viewWillAppear 中的信息肯定不够。现在,可以实现导航 Controller 委托(delegate)方法,向 TableView Controller 发出交互式弹出窗口即将开始的信号(在 viewWillAppear 之前),然后将其交给 Apple 的常规交互式弹出窗口交互 Controller 。收获? _interactionController 是私有(private) API。傻傻的苹果。

然后我发现您可以将 UINavigationController 提供给它的 interactivePopGestureRecognizer。所以你可以坐在中间,听取委托(delegate)方法,向你的 TableView Controller 发出信号,并调用苹果的手势识别委托(delegate)实现。

这应该足以让您继续前进。可能是UITableViewController 上面的可选协议(protocol)和类别,然后测试弹出的 TableView Controller 实例是否响应信号方法。或者一个子类,当然。

关于ios - 在 iOS 7 中维护导航动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19502906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com