gpt4 book ai didi

ios - 获取 interactivePopGestureRecognizer 关闭回调/事件

转载 作者:IT王子 更新时间:2023-10-29 08:02:25 24 4
gpt4 key购买 nike

是否有一个干净的解决方案可以让 View Controller 上的回调或事件被 interactivePopGestureRecognizer 关闭(弹出)?

为了清楚起见,在该手势识别器弹出 Controller 之前,我需要在最顶层的 Controller (而不是其他 Controller )上调用一些显式方法。我不想在导航 Controller 上获取事件并将事件发送到适当的 Controller ,我不想使用 viewWillAppearviewWillDissapear...

我所拥有的最接近的东西是向只有 2 个问题的手势添加目标/选择器对。首先,如果 Controller 将被关闭,我无法获得直接信息(UIGestureRecognizerStateEnded 将在任何情况下触发)。其次,在关闭 Controller 后,我需要从识别器中删除目标。

这样做的原因是我有一些 Controller 需要向他们的代表发送一些信息。使用“完成”和“取消”按钮触发事件,调用委托(delegate)方法,然后弹出 Controller 。我需要尽可能少地更改代码以实现几乎相同的结果。

此手势的另一种情况是抛出警报 View 并恢复操作的可能性:当此手势结束询问“您确定要取消您的工作吗”并让用户选择时,是否有一种方法可以显示警报 View 如果 Controller 将弹出或带回。

最佳答案

我知道这是旧的,但对于可能面临类似问题的其他人来说。这是我使用的方法。首先,我向我的导航 Controller 注册了一个 UINavigationControllerDelegate。委托(delegate)需要执行。

objective-C

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

swift

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool)

所以实现看起来像这样。

objective-C

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
id<UIViewControllerTransitionCoordinator> tc = navigationController.topViewController.transitionCoordinator;
[tc notifyWhenInteractionEndsUsingBlock:^(id<UIViewControllerTransitionCoordinatorContext> context) {
NSLog(@"Is cancelled: %i", [context isCancelled]);
}];
}

swift

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
if let coordinator = navigationController.topViewController?.transitionCoordinator() {
coordinator.notifyWhenInteractionEndsUsingBlock({ (context) in
print("Is cancelled: \(context.isCancelled())")
})
}
}

回调将在用户抬起手指时触发,并且 (Objec-C)[context isCancelled]; (Swift)context.isCancelled() 将返回 YES/true 如果动画被反转( View Controller 没有弹出),否则 NO/falsecontext 中还有更多有用的东西,例如涉及的 View Controller 和释放时完成的动画百分比等。

关于ios - 获取 interactivePopGestureRecognizer 关闭回调/事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639006/

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