用于IOS的NativescriptAngular 检测向后滑动

55ooxyrt  于 2023-02-01  发布在  iOS
关注(0)|答案(2)|浏览(95)

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

nx7onnlm

nx7onnlm1#

NativeScript在页面上具有此属性。
https://docs.nativescript.org/api-reference/classes/ui_page.page.html#enableswipebacknavigation
如果你把这个设置为false,你应该可以创建自己的后退手势。即使在原生iOS上,我也不确定你是否可以直接点击后退手势而不用自己的手势代替它。

72qzrwbm

72qzrwbm2#

这是我如何能够解决它的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>

相关问题