我的应用程序左下角有这个自定义后退按钮。当导航堆栈上没有更多视图控制器,然后只有根控制器时,按钮向下转换。现在我介绍了iOS7标准的“滑动到弹出”功能,我想根据滑动手势移动视图弹出的距离来进行按钮转换。
我已经将自己的导航控制器作为目标添加到interactivePopGestureRecognizer以接收滑动操作。所以我知道滑动开始时,移动(速度,方向和点)以及何时停止。所以我可以使后退按钮的位置取决于手指在屏幕上的位置而没有问题。
问题在于,当用户从屏幕上抬起手指时,视图会弹出或返回其原始位置。我发现检测到这种情况的唯一方法是使用UINavigationControllerDelegate
方法
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
当应用程序返回的视图完全可见时(动画已完成弹出),将调用此方法。因此,知道视图是否不弹出的方法是在触摸结束后等待一段时间,如果调用上述方法,则这当然不是一个好的解决方案。
绝对最好的情况是,如果我能得到有关动画位置和动画完成/反转的通知。另外要提到的是,我认为近似很难,因为决定是否弹出不仅取决于释放时手指的屏幕位置,还取决于速度等。
任何提示将不胜感激。