周记7——ios中picker滑动穿透bug

  问题:在使用mint-ui的picker组件时,datepicker和picker在ios的webview(bug是在Hybrid App发现的)中都会出现滑动穿透的bug,导致整个页面都会滚动,这使得用户体验很不好。

   解决思路:由于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(); } },

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgysxs.html