在 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 也可以隐藏按钮愿望.
我正在为 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 也可以隐藏按钮愿望.