uni-app 在nvue中使用自己开发的android原生组件,当页面元素过多出现滚动条时,组件内的上下滑动事件失效,变成整个页面的滑动
uni-app 在nvue中使用自己开发的android原生组件,当页面元素过多出现滚动条时,组件内的上下滑动事件失效,变成整个页面的滑动
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | 11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
PC开发环境操作系统版本号:11
HBuilderX类型:正式
HBuilderX版本号:3.4.7
手机系统:Android
手机系统版本号:Android 9.0
手机厂商:华为
手机机型:nova3
页面类型:vue
vue版本:vue2
打包方式:云端
App下载地址或H5网址:链接: https://pan.baidu.com/s/1O5S2iqonf1Lp5Lz7W6Rvpw?pwd=82tw 提取码: 82tw 复制这段内容后打开百度网盘手机App,操作更方便哦
示例代码:
【报Bug】自己开发的android原生组件, 在nvue里面使用, 当页面里面元素过多出现上下滚动条的时候, 组件内的上下滑动事件 就失效,变成整个页面的上下滑动
ios 是正常的 就Android有这个问题
操作步骤:
解压上传的demo 导入hbuidlx 选择自定义基座运行
预期结果:
滑动nvue组件里面的内容,不要导致整个nvue滚动
实际结果:
滑动nvue组件里面的内容,会导致整个nvue滚动
更多关于uni-app 在nvue中使用自己开发的android原生组件,当页面元素过多出现滚动条时,组件内的上下滑动事件失效,变成整个页面的滑动的实战教程也可以访问 https://www.itying.com/category-93-b0.html
此问题是滑动冲突的问题,在原生组件中使用requestDisallowInterceptTouchEvent来获取事件的处理。
更多关于uni-app 在nvue中使用自己开发的android原生组件,当页面元素过多出现滚动条时,组件内的上下滑动事件失效,变成整个页面的滑动的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个Android平台上常见的滚动冲突问题。在nvue中使用原生组件时,当页面可滚动且组件内部也需要滚动时,会出现手势冲突。
解决方案:
- 在原生组件中重写onInterceptTouchEvent方法,处理触摸事件拦截逻辑:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
break;
}
return super.onInterceptTouchEvent(ev);
}
- 或者在nvue页面中,给滚动容器添加scrollable属性:
<scroll-view scrollable="true">
<!-- 内容 -->
</scroll-view>
-
也可以尝试在原生组件中实现NestedScrollingChild接口,使组件支持嵌套滚动。
-
如果以上方法无效,可以在组件初始化时设置:
setNestedScrollingEnabled(true);