收藏
回答

请问为什么在iphone下,轻触并划动页面无法触发touchstart响应?

在iphone下, 轻触并划动页面下的scroll-view组件无法触发touchstart响应。只有当手指接触时间稍长时,才会触发touchstart。请问,有何解决方案?谢谢!

回答关注问题邀请回答
收藏

3 个回答

  • 往事如风
    往事如风
    2019-08-19

    应该是scroll-view滚动条的优先级高于touchstart,比如scroll-y='true'时,当手指上下滑动时,就不会触发子项的touch事件,而被scroll-view滚动条占用了。

    2019-08-19
    有用
    回复 6
    • 胡频 Pin
      胡频 Pin
      2019-08-19
      十分感谢,听您一说,应该是这个问题。那有没有解决方案呢?
      2019-08-19
      回复
    • 往事如风
      往事如风
      2019-08-19回复胡频 Pin
      之前我也碰到类似的问题,如果非要以这样的界面布局实现功能,那么就要换一种思路,不用scroll-view,我当时是通过transform:translateY(21px),这样实现滚动条效果,然后子项的滑动事件响应就不会被占用了。有点麻烦,勉强算解决了当时的问题,就是效果没有滚动条好。利与弊自己权衡吧
      2019-08-19
      回复
    • 往事如风
      往事如风
      2019-08-19回复往事如风
      还应该配合wxs来,不然会有卡顿现象
      2019-08-19
      回复
    • 往事如风
      往事如风
      2019-08-19回复往事如风
      可参考wxs官方说明:https://developers.weixin.qq.com/miniprogram/dev/framework/view/interactive-animation.html
      2019-08-19
      回复
    • 往事如风
      往事如风
      2019-08-19回复往事如风
      我封闭成了组件,你可以下载下来参考一下:https://download.csdn.net/download/u010465417/11468176
      2019-08-19
      回复
    查看更多(1)
  • 胡频 Pin
    胡频 Pin
    2019-08-19


    <scroll-view style="height:100vh;" scroll-y="true" scroll-into-view="{{toView}}" scroll-with-animation="true" class="previewImageContainer">

    <block wx:for="{{pages}}" wx:for-index="pn" wx:for-item="page">

    <block wx:if="{{page.status != 'loaded'}}">

    <view class="empty-page" id="page{{pn}}"  capture-bind:touchstart="bindTouchPage">

    <image src="../../images/yanjiu_blue.svg" />

    </view>

    </block>

    <block wx:else>

    <block wx:if="{{page.imageInfo.pageKeyPos}}">

    <view id="page{{pn}}" capture-bind:touchstart="bindTouchPage" style="background:url({{page.imageInfo.url}})no-repeat;width:750rpx;height:{{page.imageInfo.pageKeyPos.pageSize.h*(750/page.imageInfo.pageKeyPos.pageSize.w)}}rpx;background-size:100% 100%;margin-bottom:10rpx;">

    <block wx:for="{{keywords}}" wx:for-index="ki" wx:for-item="keyword">

    <canvas canvas-id='ki{{ki}}pn{{pn}}' style="position:absolute;width:100%; height:100%;margin-left:{{ keywordHighlightMap[ki] == true ? 0 : '5000rpx'}};"></canvas>

    </block>

    </view>

    </block>

    <block wx:else>

    <image id="page{{pn}}" mode="widthFix" src="{{page.imageInfo.url}}" />

    </block>

    </block>

    </block>

    </scroll-view>



    bindTouchPage: function(event){

    console.log(JSON.stringify(event));


    let current = parseInt(event.currentTarget.id.substr(4));

    console.log(current);


    let index = -1;

    let end = current + 10;

    if(end > this.data.numPage){

    end = this.data.numPage;

    }

    let pages = this.data.pages;

    for (let pn = current; pn < end; pn++){

    if (pages[pn].status == 'unload'){

    index = pn;

    break;

    }

    }


    if(index == -1){

    return;

    }


    this.loadHighlightedView(index, current + 10 - index, true);

    },




    .previewImageContainer{

    width: 750rpx;

    min-height: 100vh;

    padding-bottom: 15vh;

    background-color: #ffffff;

    }


    .previewImageContainer image{

    width: 100%;

    height: auto;

    }


    .empty-page{

    width: 750rpx;

    height: 750rpx;

    margin-bottom: 10rpx;

    }


    .empty-page image{

    width: 300rpx;

    height: 300rpx;

    margin: 225rpx;

    }


    2019-08-19
    有用
    回复
  • ʚ青ɞ
    ʚ青ɞ
    2019-08-19

    未复现,提供一下代码片段。

    2019-08-19
    有用
    回复
登录 后发表内容
问题标签