【问题标题】:Disable content bouncing scroll禁用内容弹跳滚动
【发布时间】:2020-06-09 15:55:42
【问题描述】:

在我的hybrid 应用程序中,可以拖动屏幕来刷新列表。在Android 中这工作正常,但在iOS 上,当我向下拖动时,它有时会将它与滚动页面混淆,因此它具有溢出/弹跳效果。

ionic 中有一个属性可以用来禁用它,但它不起作用:

<ion-content id="questions" has-bouncing="false">

config.xml 已经有这几行代码:

  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>

【问题讨论】:

    标签: ios ionic-framework


    【解决方案1】:

    Ionic 2 的解决方案:

    <ion-content no-bounce>
    

    【讨论】:

      【解决方案2】:

      您需要将overflow-scroll 设置为false,例如:

      overflow-scroll="false"

      适用于 Ionic 1.3

      【讨论】:

      • 你是否在某处设置了overflow-scroll="true"?
      • 我没有,如果我添加它并将其设置为 false 会有帮助吗?
      • 确实如此,将其设置为false
      • @Kapilsoni:在 标签内
      • @radioaktiv 先生,它消除了普通页面中的弹跳效果,但在段部分中不起作用,并且在段中相同的弹跳问题先生?
      【解决方案3】:

      在离子 4 &lt;ion-content no-bounce has-bouncing="false" forceOverscroll="false"&gt; 上。如果此失败强制删除弹跳。

      要移除并强制在 ios 上的组件 ion-content 中不反弹,请创建文件 DisableBounce.m 内容如下。

      #import <Foundation/Foundation.h>
      #import <UIKit/UIKit.h>
      
      @implementation UIScrollView (NoBounce)
      - (void)didMoveToWindow {
          [super didMoveToWindow];
          self.bounces = NO;
      }
      @end
      

      并保存在平台/ios/CordovaLib/Classes/Private/Plugins/CDVUIWebViewEngine 上。 这会禁用您应用中的所有效果反弹。

      【讨论】:

      • 在 Ionic 4 中为我工作,这个页面已经有一个页面顶部的条件,但是,它没有以某种方式实现,它应该通过添加首选项来工作但不工作,这个解决方案对我有用.
      • 在 ionic 3 上完美运行。我试图在 iOS 上长时间禁用这种弹跳效果。非常感谢
      【解决方案4】:

      对于 Ionic 4,使用:

      <ion-content [scrollY]="false">...</ion-content>
      

      【讨论】:

      • 这会移除滚动并且没有反弹效果
      【解决方案5】:

      我正在使用ionic 1.3.2,以下对我有用:

        <preference name="webviewbounce" value="false" />
        <preference name="UIWebViewBounce" value="false" />
        <preference name="DisallowOverscroll" value="true" />
      

      每个ion-content 上都有has-bouncing="false"。我没有进行彻底的测试来检查可以完成这项工作的最低要求。然而结果:iOSandroid 没有反弹。

      希望它对某人有所帮助。

      【讨论】:

        【解决方案6】:

        以下解决方案对我有用:仅测试了 ionic 3.9 版本

        运行命令,

        1. ionic cordova 平台添加 ios && ionic cordova 准备 ios
        2. 然后找到CDVWKWebViewEngine.m,里面 /platforms/ios//插件/cordova-plugin-ionic-webview/
        3. 将这行代码放在行的底部并保存。

        @implementation UIScrollView (NoBounce)
        - (void)didMoveToWindow {
           [super didMoveToWindow];
           self.bounces = NO;
        }
        @end

        【讨论】:

          【解决方案7】:

          overflow-scroll="false"no-bouncehas-bouncing="false" 都有效.. 我正在尝试清理离子项目ionic conference 并在演讲者列表页面将提到的属性应用于离子内容.. 滚动的弹跳没有被禁用

          cli 包:(/Users/lucky/Documents/projects/ionic-conference/node_modules)

          @ionic/cli-utils  : 1.9.2
          ionic (Ionic CLI) : 3.9.2
          

          全局包:

          Cordova CLI : 7.0.1 
          

          本地包:

          @ionic/app-scripts : 2.1.4
          Cordova Platforms  : android 6.2.3 ios 4.3.1
          Ionic Framework    : ionic-angular 3.6.1
          

          系统:

          ios-deploy : 1.9.1 
          ios-sim    : 6.0.0 
          Node       : v6.9.5
          npm        : 5.4.0 
          OS         : macOS Sierra
          Xcode      : Xcode 8.3.3 Build version 8E3004b 
          

          使用 xcode 模拟器 iPhone 6 Plus 测试

          【讨论】:

            【解决方案8】:

            你可以使用

            .scroll-content { -webkit-overflow-scrolling: auto !important; }

            将其添加到 scss 文件中。

            【讨论】:

            • -webkit-overflow-scrolling: touch;触摸不起作用,自动按预期工作。谢谢
            【解决方案9】:

            我猜 Leonardo Pineda 的回答是对的,但是直接更新到原生文件并不是一个好方法,我们应该去创建自定义插件来禁用 iOS 上的弹跳。

            步骤 1. 从 github repo (https://github.com/dtrmangesh/plugin-disable-ios-bouncing) 克隆插件。

            步骤 2. 将存储库路径添加到您的 package.json

            "dependencies": { BouncingIos : "git+<https://github.com/dtrmangesh/plugin-disable-ios-bouncing>"}
            

            【讨论】:

            • 添加依赖后需要导入这个吗?
            • 不需要添加任何依赖,请按照以下步骤尝试。
            【解决方案10】:

            我正在从 Ionic 3 升级到 Ionic 5 并找到了这篇文章。但后来在文档中找到了解决方案。
            我正在使用 Ionic 5(不确定 Ionic 4 是否也可以)。只需将slot="fixed" 添加到ion-conent 中的元素即可:

            <ion-content
              [scrollEvents]="true"
              (ionScrollStart)="logScrollStart()"
              (ionScroll)="logScrolling($event)"
              (ionScrollEnd)="logScrollEnd()">
                <h1>Main Content</h1>
            
                <div slot="fixed">
                  <h1>Fixed Content</h1>
                </div>
            </ion-content>
            

            它在 iOS 中完美运行。
            来源:https://ionicframework.com/docs/api/content

            【讨论】:

              猜你喜欢
              • 2020-10-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-06-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多