ios中picker滑动穿透bug

Bug描述:使用mint-ui的picker组件时,datepicker和picker在ios的webview(bug是在Hybrid App发现的)中会出现滑动穿透的现象,导致弹层后面的页面也会滚动,这使得用户体验很不好。

方案1:由于picker组件的滚动是用touch事件 + translate实现的,所以,我们可以在picker弹层出现的时候禁止页面的默认滚动机制,picker弹层消失的时候解除禁用页面的默认滚动机制。

data () {
    return {

      /*---------监听函数--------------*/
      handler:function(e){e.preventDefault();}
    }
  },
  // 通过监听蒙层的显隐字段来控制页面滚动的禁用事件 或者在method方法里控制
 watch:{
     maskShow:function(newvs,oldvs){//picker关闭没有回调函数,所以侦听该属性替代
        if(newvs){
           this.closeTouch();
        }else{
           this.openTouch();
        }
     }
  },
  methods:{
    /*解决iphone页面层级相互影响滑动的问题*/
    closeTouch:function(){   /*  弹层出现时调用  */
        document.getElementsByTagName("body")[0].addEventListener('touchmove',
        this.handler,{passive:false});//阻止默认事件
        console.log("closeTouch haved happened.");
    },
    openTouch:function(){   /*  弹层关闭时调用  */
        document.getElementsByTagName("body")[0].removeEventListener('touchmove',
        this.handler,{passive:false});//打开默认事件
        console.log("openTouch haved happened.");
    },
    openPicker(){  /* 弹层出现 */
        this.openTouch();
    },
    closePicker(){  /* 弹层关闭   */
        this.openTouch();
    }
  },

方案2:当弹层出现的时候设置body{overflow: hidden;},弹层关闭时设置body{overflow: scroll/auto;}

除了mint-ui的picker,其他库的picker组件可能也会有类似问题。比如vux、weui... 问题产生的原因是一样的,应该同样可以用这个思路解决(目前没测过)。

转载于:https://www.cnblogs.com/chenwenhao/p/10011575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值