Nativescript Angular 如何在 IOS 上检测滑动返回手势

3
在Nativescript Angular中,我可以从左边缘向右滑动,在iOS上返回。是否有任何方法可以检测或捕获此后退手势?
原因是因为我在屏幕上有一个按钮,当点击时执行“this.routerExtensions.back()”。我想确定“返回操作”是来自该按钮还是iOS滑动事件。
谢谢

有关此事的任何信息吗?我也想禁用手势。 - Prajil Shrestha
我想这很简单。只需以某种方式识别您的按钮点击即可。无论执行了什么导航,您都可以确定它是否是一个按钮。 - Sergey
有没有办法检测向后滑动?或者导航是通过返回还是向后滑动实现的? - scholarwithfire
2个回答

0

我正在寻找一种检测滑动返回的方法,而不是禁用它。 - scholarwithfire
就像我所说的,你可能需要禁用它,然后使用自己的左滑手势添加所需的功能。我不确定NativeScript在这里的深度如何,但如果你可以调用controller.interactivePopGestureRecognizer.addTarget()方法,那么你可能能够添加自己的动作,在左滑时也会被调用。 - flagoworld

0
这是我如何在Android和iOS上解决它的方法:
  1. 调整构造函数以从Android操纵pullToLeft函数,并禁用iOS的默认向后滑动:
constructor(...) {
    if (isAndroid) {
      Application.android.on(
        AndroidApplication.activityBackPressedEvent,
        (data: AndroidActivityBackPressedEventData) => {
          data.cancel = true;
          ...yourCustomFunction()
        }
      );
    } else {
      page.enableSwipeBackNavigation = false;
    }
  }
  1. 对于Android,它已经可以工作了 - 对于iOS,您需要编写一个函数,以便在模板上使用(这也是您可以识别滑动操作的方式):
public onSwipe = (args: SwipeGestureEventData) => {
    if (!isAndroid) {
      if (args.direction === SwipeDirection.right) {
        ...yourCustomFunction()
      }
    }
  };
  1. 禁用默认的PopGestureSerializer,并在模板/元素顶部添加滑动功能,它应该可以在iOS上正常工作:
<StackLayout [interactivePopGestureRecognizer]="false" (swipe)='onSwipe($event)'>
...
</StackLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接