在 iOS 平台上的 NativeScript 应用程序中,有没有办法捕获和取消后退按钮事件?

Is there a way to catch and cancel the back button event in a NativeScript app on the iOS platform?

我正在为 Android 和 iOS 开发 NativeScript-Angular 应用程序,但遇到了标准后退按钮导航的问题。我已经解决了 Android 的问题,但找不到 iOS.

的解决方案

返回到需要路由数据的特定页面时,该事件导致出现问题,从而导致异常:

"Error: Currently in page back navigation - component should be reattached instead of activated".

我的 Android 解决方案捕获后退按钮事件并将其取消,然后调用路由器进行导航。


 ngOnInit() { 
     if (app.android) {
       app.android.on(app.AndroidApplication.activityBackPressedEvent, 
         (args: any) => this.backEvent(args));
     }
 }

 backEvent(args) {
   args.cancel = true; 
   this.backToRegister(false);
 }

 backToRegister(accepted: boolean){
   this.router.navigate(['/register', 
     this.registerParametersEntered.password, 
     this.registerParametersEntered.confirmPassword, 
     this.registerParametersEntered.code, 
     this.registerParametersEntered.email,
     accepted]);
 }

我想做与iOS类似的事情,例如:-

if (app.ios) {
  this.page.on('navigatingFrom', (data) => {
    // TODO cancel the back button event
    this.backToRegister(false);
  })
}

我找不到为 iOS 执行此操作的方法 - 我的研究使我得出结论,无法取消 iOS 后退按钮 - 例如,请参阅 .

非常感谢任何想法或替代建议!

您无法覆盖 iOS 的后退按钮。看到这个 SO question。您基本上需要创建一个自定义按钮,您可以模仿 iOS 上后退按钮的外观并添加您自己的事件处理程序。这就是您在本机 iOS 应用程序中执行此操作的方式,以及您在 NativeScript 中执行此操作的方式,因为本机控件是通过 NativeScript 使用的。

nativescript 中的 actionbar 可以在里面有一个自定义布局,或者你可以只使用一个 action-item 并将它放在左侧 iOS,同时如果你 Android 也可以隐藏按钮愿望.