ionic 5 Modal在iOS上显示空白页面

Posted

技术标签:

【中文标题】ionic 5 Modal在iOS上显示空白页面【英文标题】:ionic 5 Modal shows blank page on iOS 【发布时间】:2019-11-24 16:33:41 【问题描述】:

我在 ios 上的 Ionic 5 Angular 8 上显示模态时遇到问题。

所以我有一个带有两个按钮的页面,一个在同一个页面组件中声明,另一个来自子组件。 单击同一页面中的按钮时,模式打开正常。 当子组件中的按钮被点击时,事件被发送到父 Page,然后创建模态,但是模态向上滑动,在视口之外。

我已经尝试了我能想到的所有可能的故障排除方法: 删除所有自定义 CSS,删除所有 html,更改事件路径,添加超时等。 我的整个应用程序中没有任何自动对焦或引导程序:[]。 这是页面的样子

export class MyPage implements OnInit, OnDestroy 
   //...
   private openModal (params) 
     const obj = 
      component: ModalComponent,
      componentProps: params
    ;
    this.modalProvider.create (obj).then (
        modal => 
        modal.onDidDismiss().then(
           () => 
        );
        modal.presente ();
     
    )
   

   public onOpenModal () 
      const params = 
           //custom properties
      
      this.openModal(params);
   

   public localAction () 
      const params = 
          // custom params
       
      this.openModal (params)
   

现在在模板方面:

<ion-content force-overscroll="false" [scrollY]="false">
  <!-- Some html --->
  <ion-grid (click)="localAction()">
     <!-- Some html --->
  </ion-grid>
  <!-- Some html --->
  <child-component (modalOpenEmitter)="onOpenModal($event)">

</ion-content>

【问题讨论】:

【参考方案1】:

好的,经过几个小时的挖掘,我发现了问题。 原来是因为子组件承载了一个水平滚动的按钮列表。

当单击子组件中的按钮时,会正常发出一个事件,但我使用的是一个名为 scrollintoview 的 DOM 函数,如下所示:

子组件.ts:

public btnClicked (value) 
   //...
   this.clickEmitter.emit(value); // Normal stuff
   const element = document.getElementById(value.id);
   if (element) 
      element.scrollIntoView(); // This caused the the modal to disappear 
   

此 scrollIntoView 用于使单击的按钮在视口中进一步滑动。

不幸的是,这在 iOS 上破坏了模式,但顺便说一下,它在 android 上运行良好。

【讨论】:

以上是关于ionic 5 Modal在iOS上显示空白页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在某些页面上禁用 Sidemenu Ionic 2

ionic2 子页面隐藏去掉底部tabs导航,子页面全占满显示方法(至今为止发现的最靠谱的方法)

使用 Ionic Livereload 导致空白页

ionic 调试 "死亡白屏"

DZNEmptyDataSet——空白数据集显示框架

使用 Ionic 从 Firebase 显示值时遇到问题