位置: IT常识 - 正文

微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题)

编辑:rootadmin
微信小程序解决view点击事件穿透地图map触发markertap

推荐整理分享微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:微信小程序解决全局数据共享的方案是?,微信小程序解决原生组件在最高层问题,微信小程序解决异步问题,微信小程序解决http请求,微信小程序解决全局数据共享的方案是?,微信小程序解决原生组件在最高层问题,微信小程序解决全局数据共享的方案是?,微信小程序解决跨域问题,内容如对您有帮助,希望把文章链接给更多的朋友!

微信小程序中使用map组件,ios手机中点击地图上的view,会触发底下的markertap,只要底下如果有marker点的话。

这就造成了用户体验不是很好。

然后无意间我发现点击能滑动的scroll-view反而不会触发底下的markertap,就等于是一个不穿透的容器。我就在想是不是view也可以换成scroll-view,然后防止穿透点击,答案是:可以。

但是体验还是不太好,因为scroll-view会滑动,所以按钮里面的内容也会滑动,不是最佳的解决方法。于是,我就想到可以用透明的可滑动的scroll-view放在上层作为隐形按钮,下层放普通的按钮样式,这回真正的解决了ios的bug。

一、地图上覆盖的子组件代码

wxml代码

<view class="box"> <swiper circular> <swiper-item wx:for="{{switchArr}}"> <view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view class="card"> <view class="content"> <view class="icon"> <image src="{{item.imageUrl}}" mode="aspectFill"></image> </view> <view class="bt"> <view class="title">{{item.name}}</view> </view> </view> </view> </view> <scroll-view class="scroll-view" scroll-y="true" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view style="height:100vh;"></view> </scroll-view> </swiper-item> </swiper> <view class="cancelSwitch" style="top:{{statusHeight+3}}px" catchtap="cancelSwitch"> <text>退出页面</text> </view></view>

less代码

/* pages/subPack/otherAnimation/index.wxss */page { box-sizing: border-box; font-family: sans-serif;}.cancelSwitch{ position: absolute; left: 40rpx; display: flex; align-items: center; justify-content: center; width: 210rpx; height: 60rpx; line-height: 60rpx; border-radius: 30rpx; color:#fff; background-color: #d94251; image{ width: 35rpx; height: 30rpx; margin-left: 3rpx; }}.box{ position: fixed; z-index: 10000; min-height: 100vh; background-color: #1a1c22; width: 100%; swiper { width: 100%; height: 100vh; swiper-item { width: 100%; height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; .container { position: relative; display: flex; justify-content: space-around; align-items: center; width: 710rpx; .card { width: 100%; margin: 20px; padding: 40px 30px; border-radius: 40px; background-color: #20252a; border: 4rpx solid #ffefa1; box-shadow: -0px -0px 10px #ffefa1; .imgBx { position: relative; text-align: center; } .content { text-align: center; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; .icon { padding: 20px; margin-top: 15px; height: 100%; width: 120%; border-radius: 40px; color: #32a3b1; font-size: 16px; overflow: hidden; text-decoration: none; background: #20252a; box-shadow: 13px 13px 26px #181c20, -13px -13px 26px #282e35; image { width: 100%; border-radius: 10px; } } .bt { display: inline-block; padding: 10px 20px; margin-top: 45px; border-radius: 40px; color: #ffefa1; font-size: 16px; text-decoration: none; background: #20252a; box-shadow: 20px 20px 41px #161a1d, -20px -20px 41px #2a3037; &:hover { background: #20252a; box-shadow: inset 20px 20px 41px #161a1d, inset -20px -20px 41px #2a3037; } } } &:hover { background: #20252a; box-shadow: inset 20px 20px 41px #161a1d, inset -20px -20px 41px #2a3037; } } } .scroll-view{ width: 750rpx; background-color: #fff; position:absolute; height: 1000rpx; opacity: 0; } } }}

js代码

const app = getApp();Component({ data: { statusHeight: app.globalData.statusHeight, buttonCanUse:true }, properties: { switchArr:{ type:Array, value:[] } }, methods: { switchItem(e) { if(!this.data.buttonCanUse){ return } this.setData({ buttonCanUse:false }) this.triggerEvent('switchItem', { index:e.currentTarget.dataset.index, name:e.currentTarget.dataset.name }) this.setData({ buttonCanUse:true }) }, cancelSwitch() { this.triggerEvent('cancelSwitch') }, }})二、小程序效果

map效果:map上面有很多点位 这些点位都是可以点击进去其他页面的点

微信小程序解决view点击事件穿透地图map触发markertap(微信小程序解决跨域问题)

 切换旅游路线的子组件:是覆盖在map之上的一个容器 z-index:10000

点击就可以切换到路线

三、问题所在

点击这个全景路线的时候 如果点击的位置下方有一个marker点,则他触发两个点击事件,即同时切换路线 同时进入marker点链接的路径

四、解决思路

利用可滑动的scroll-view不会穿透的特性,在子组件上面插入隐形scroll-view,设置点击事件,(用户以为点击的是子组件,实际上点击的是scroll-view,这是一个通用的思路),然后将scroll-view大小覆盖子组件

五、代码分析

核心代码:

<view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view class="card"> <view class="content"> <view class="icon"> <image src="{{item.imageUrl}}" mode="aspectFill"></image> </view> view class="bt"> <view class="title">{{item.name}}</view> </view> </view> </view></view> <scroll-view class="scroll-view" scroll-y="true" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}"> <view style="height:100vh;"></view></scroll-view>.scroll-view{ width: 750rpx; background-color: #fff; position:absolute; height: 1000rpx; opacity: 0;}

 <view class="container" catchtap="switchItem" data-index="{{index}}" data-name="{{item.name}}">是子组件里面每个路线的容器,点击可以切换路线

我在同级写了一个scroll-view 设置宽度750rpx撑满屏幕 然后高度1000rpx盖住整个路线容器 并且将透明度改为零(即opacity:0)

然后在wxml中 设置scroll-y=“true” 在scroll-view里面放一个高度100vh的盒子,让整个scroll-view可滑动,因为scroll-y,所以是上下滑动。

这里为什么不设置scroll-x=“true” 然后在横向上滑动 是因为 我本身用了swiper组件 左右滑动切换,用scroll-x的话,两个滑动事件会冲突,会影响原有的滑动感受。然后在scroll-view上

然后在scroll-view上添加原本写在container上面的点击的点击事件,让用户点的实际上是scroll-view

这样就可以保证ios系统手机点击不会穿透了。

本文链接地址:https://www.jiuchutong.com/zhishi/288122.html 转载请保留说明!

上一篇:nvm 安装node失败问题记录(nvm安装及全局配置node)

下一篇:Web 页面之间传递参数的几种方法(html页面间传数据)

  • 荣耀magic3怎么拦截骚扰电话(荣耀magic3怎么拦截地区号码)

    荣耀magic3怎么拦截骚扰电话(荣耀magic3怎么拦截地区号码)

  • 怎么设置拼多多不让别人看到我买的东西(怎么设置拼多多访问相册)

    怎么设置拼多多不让别人看到我买的东西(怎么设置拼多多访问相册)

  • 安卓手机来电没有声音(安卓手机来电没有声音只有震动)

    安卓手机来电没有声音(安卓手机来电没有声音只有震动)

  • 一方删除一方拉黑点赞还在吗(一方删除一方拉黑评论点赞还在吗)

    一方删除一方拉黑点赞还在吗(一方删除一方拉黑评论点赞还在吗)

  • 华为an90是什么型号(华为an90是什么型号的手机)

    华为an90是什么型号(华为an90是什么型号的手机)

  • 手机半屏幕黑屏,一半正常是什么原因(手机半屏黑屏怎么办)

    手机半屏幕黑屏,一半正常是什么原因(手机半屏黑屏怎么办)

  • 传话筒的原理(传话筒科学原理)

    传话筒的原理(传话筒科学原理)

  • ETC总是识别失败

    ETC总是识别失败

  • 飞行模式能看到未接来电吗(飞行模式能看到定位吗)

    飞行模式能看到未接来电吗(飞行模式能看到定位吗)

  • mt7一cl00什么型号(华为mt7-cl00参数)

    mt7一cl00什么型号(华为mt7-cl00参数)

  • 小米5可以升级miui11吗(小米5可以升级到什么系统?)

    小米5可以升级miui11吗(小米5可以升级到什么系统?)

  • 数据文件可以删除吗(数据文件删除了影响软件应用吗)

    数据文件可以删除吗(数据文件删除了影响软件应用吗)

  • 手机优酷如何添加好友(手机优酷如何添加设备)

    手机优酷如何添加好友(手机优酷如何添加设备)

  • vivo怎么查下载记录(vivo怎么查看下载过的app)

    vivo怎么查下载记录(vivo怎么查看下载过的app)

  • 门店地图定位怎么弄(门店地图定位怎么弄没有营业执照)

    门店地图定位怎么弄(门店地图定位怎么弄没有营业执照)

  • realmeQ怎么关闭应用通知(realme怎么关掉breeno)

    realmeQ怎么关闭应用通知(realme怎么关掉breeno)

  • vivo云相册在哪里打开(vivox21云相册在哪)

    vivo云相册在哪里打开(vivox21云相册在哪)

  • wifi放大器怎么设置(wifi放大器怎么连接路由器)

    wifi放大器怎么设置(wifi放大器怎么连接路由器)

  • 小米平板4安全中心在哪里(小米平板4安全中心下载安装)

    小米平板4安全中心在哪里(小米平板4安全中心下载安装)

  • 微信能定位找人吗(微信能定位找人吗不让对方知道)

    微信能定位找人吗(微信能定位找人吗不让对方知道)

  • OPPOR17红外线遥控在哪(oppo红外线遥控在哪里)

    OPPOR17红外线遥控在哪(oppo红外线遥控在哪里)

  • ldn一al20是什么型号(ldn-al20是什么)

    ldn一al20是什么型号(ldn-al20是什么)

  • 简述das,nas与san技术的区别(das.nas.san的定义和联系?)

    简述das,nas与san技术的区别(das.nas.san的定义和联系?)

  • 微信占用空间较大(微信占用空间大是怎么回事)

    微信占用空间较大(微信占用空间大是怎么回事)

  • 营业执照作废声明怎么撤销
  • 银行汇票用什么账户核算
  • 电子承兑汇票贴现流程
  • 设备采购及安装属于工程还是货物
  • 实际发生应收账款坏账时的会计处理
  • 资产负债表其他流动资产包括什么
  • 施工安全协议违约怎么办
  • 成品油增值税抵减政策
  • 餐饮招待怎么入账
  • 私营独资企业是公司还是非公司
  • 销售型公司进销项时会计分怎么写?
  • 印花税合同金额和结算金额不一致
  • 股权变更印花税双方都要交吗
  • 水利行政事业性收费收入会计分录
  • 销项税额抵减是怎么回事
  • 7月1日发票新规定
  • 未办理房屋预售许可证怎么处理
  • 提供鉴证咨询服务属于增值税征税范围吗
  • 分公司负债,总公司要负担
  • 现金流量表附表的其他指的是什么
  • 普票的销项可以抵扣吗?
  • 公积金超出上限部分
  • 出口报关单中有哪些内容
  • 免抵退税的具体计算方法
  • 成本法转为权益法属于会计政策变更吗
  • 预收外汇会计分录
  • 发票已到货未到会计处理
  • uml中的顺序图由什么组成
  • elementui的upload组件详解
  • 销售费用属于损益类科目的收入还是费用
  • 预缴所得税会计分录咋做
  • unity常用脚本语言
  • 玩很多游戏的人
  • cv计算机视觉定义
  • Vite4+Pinia2+vue-router4+ElmentPlus搭建Vue3项目(组件、图标等按需引入)[保姆级]
  • 一般纳税人和小微企业的区别
  • apr命令怎么用
  • index.php怎么修改
  • 机械租赁税率是多少?
  • python处理数据教程
  • 公司银行开户的费用怎么做账
  • 实收资本 增加
  • 耕地里埋坟国家有什么规定
  • 民办非企业开办资金入什么科目
  • 沙子产量表格
  • sql 文件存储
  • 现金流量表里支付的各项税费包括什么
  • 企业增资相关知识点
  • 公司收到生育津贴不给员工
  • 以前年度损益科目编码
  • 销售退回的账务处理会计分录
  • 临时工工资如何做账
  • 资产减值损失和资产减值准备的区别
  • 税盘减免会计分录
  • 非正常损失的进项税额转出会计分录
  • 运输费增值税专用发票
  • 固定资产清理账户借方
  • 会计复式记账法题目
  • windows vista(service pack1)
  • debian系统
  • win7系统如何隐藏任务栏
  • mac系统如何隐藏文件
  • windows8开机慢怎么办
  • 思科用户模式命令
  • win102020h2版本
  • nmstt.exe - nmstt是什么进程 有什么用
  • win7开始菜单中的应用程序图标隐藏了
  • node.js模块化
  • 有关表格边框的快捷键
  • [置顶]星陨计划
  • 完美解决gvim的菜单乱码问题
  • jquery图片轮播无缝连接
  • js递增数字
  • javascript图表
  • 如何配置centos7
  • 查博士报告怎么查真假
  • 材料费增值税发票几个点
  • 重庆国税税务局官网
  • 江西国家税务局电子税务局
  • 内蒙古税务总局网站官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设