【问题标题】:Ionic 4 scroll not working properly on iOSIonic 4 滚动在 iOS 上无法正常工作
【发布时间】:2020-01-14 05:51:11
【问题描述】:

我有一个适用于 Android 的 Ionic 4 Cordova 移动应用,但在 iOS 上存在一些奇怪的滚动问题。离子内容不滚动(垂直滚动),奇怪的是,当我打开侧边菜单时,滚动再次开始工作,当我关闭侧边菜单时它停止工作。我附上app组件的html。

我也不知道问题出在哪里,因为它在 Ionic 3 上运行良好。

这是应用程序的 app.component.html:

  <ion-header class="menu-header menu-title-ios-adapter">
    <ion-toolbar>
      <ion-title class="title-small">Menu</ion-title>
    </ion-toolbar>
  </ion-header>

  <ion-content class="main-menu-bg">
    <ion-list *ngFor="let menuGroup of appMenu; let i = index" class="transparent-bg">
      <ion-list-header *ngIf="menuGroup.name">
        {{menuGroup.name}}
      </ion-list-header>
      <div *ngFor="let p of menuGroup.pages">
        <ion-menu-toggle autoHide="false" class="transparent-bg"
          [ngClass]="isActive(p) ? 'icon-color-3':'icon-color-light'"
          *ngIf="(p.enabled===undefined || p.enabled.value) && ((p.loginRequired && authenticated) || (!p.loginRequired && !authenticated) || (p.loginRequired === undefined))">
          <!-- <ion-item tappable (click)="openPage(p)" class="transparent-bg"> -->
          <ion-item tappable [routerDirection]="'root'" [routerLink]="p.url" class="transparent-bg padding-left-s">
            <icon-wrapper class="slot-icon-padding" customClass="normal" slot="start" [icon]="p.icon" [custom]="p.customIcon"></icon-wrapper>
            <ion-label>
              <span class="text-color-gold">{{p.title}}</span>
            </ion-label>
          </ion-item>
        </ion-menu-toggle>
      </div>
    </ion-list>
  </ion-content>

</ion-menu>

<ion-router-outlet id="content" main></ion-router-outlet>

这是一个页面的内容:

<ion-content>
  <div class="view-frame" fxLayout="column">
    <div class="scrollbar-y" (swipe)="swipeEvent($event)">
      <ion-list class="list-padding">
        <ion-item *ngFor="let leader of board" class="list-item">
          <!-- item -->
        </ion-item>
      </ion-list>
    </div>
  </div>
</ion-content>

这是有问题的css:

.view-frame {
height: auto;
overflow-y: auto;
overflow-x: hidden;
display: block;
position: absolute;
bottom: 0;
top: 0;
left: 0;
right: 0;
margin-top: 20px;
margin-left: 10px;
margin-right: 10px;
margin-bottom: 10px;
z-index: 999999999;
}

.scrollbar-y {
overflow-y: auto !important;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}

【问题讨论】:

  • 这可能是很多事情。你在用hammerjs吗?滑动手势?你的 CSS 是什么?您是否在 main-menu-bg 类中使用任何防止弹跳/溢出的东西?请分享更多上下文和您的代码。否则真的很难提供帮助
  • 感谢您的精彩观察。我确实在使用hammerjs 和滑动手势。我将编辑问题以包含更多细节。
  • 在你的 .scrollbar-y 类上尝试(用于实验)设置:touch-action: pan-x !important;也许可以使用这里的值:hammerjs.github.io/touch-action
  • 问题是页面只有在它上面有一个模态(或sidemenu打开)时才真正滚动,这很奇怪。模态也响应点击和滚动。另外,我使用的是谷歌地图插件,行为相似,即使顶部有模式,地图也会移动。这也只发生在 iOS 上。
  • 事实证明hammerjs确实是问题所在。我评论了导入,现在它工作正常。感谢您指出问题

标签: angular cordova ionic-framework ionic4


【解决方案1】:

此问题是由于尝试同时启用滑动和滚动手势造成的。尝试删除滑动或尝试此线程上的建议。 https://github.com/angular/angular/issues/10541 根据实际完成这项工作的人所说,这个问题与角度有关。祝你好运。

【讨论】:

  • 谢谢,我一回到那个项目就试试这个
  • 似乎没有一种方法可以同时使用水平滑动(切换页面)而不破坏垂直滚动(滚动项目列表),这就是我包含 Hammer 的实际原因。首先是js。当然,没有滑动也没关系,只是它曾经与 Ionic 3 一起工作。
  • 我在这个问题上苦苦挣扎了一周,今天看到了这篇文章。我删除了Hammer.jsswipeLeft 功能,然后垂直滚动起作用了。
猜你喜欢
  • 1970-01-01
  • 2019-09-04
  • 2018-08-08
  • 2018-06-08
  • 2016-07-17
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多