Есть ли способ отловить и отменить событие кнопки «Назад» в приложении NativeScript на платформе iOS? - PullRequest
1 голос
/ 09 апреля 2019

Я работаю над приложением NativeScript-Angular для Android и iOS, но столкнулся с проблемой стандартной навигации по кнопке «Назад». Я решил проблему для Android, но не могу найти решение для iOS.

Событие вызывает проблему при возврате к определенной странице, где ожидаются данные маршрутизации, что приводит к исключению:

«Ошибка: в настоящее время в навигации назад страницы - компонент должен быть присоединен, а не активирован».

Мое решение 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 - например, см. здесь .

Любые идеи или альтернативные предложения с благодарностью!

1 Ответ

2 голосов
/ 09 апреля 2019

Вы не можете переопределить кнопку возврата для iOS.Смотрите этот ТАК * вопрос .В основном вам нужно создать пользовательскую кнопку, вы можете имитировать внешний вид кнопки «Назад» на iOS и добавить свой собственный обработчик событий.Это то, как вы делаете это в собственном приложении iOS, и как вы делаете это в NativeScript, поскольку собственные элементы управления используются через NativeScript.

Панель действий в nativescript может иметь собственный макет внутри, или вы можете просто использоватьaction-item и поместите его слева для iOS, а также при желании скрыв кнопку на Android.

...