位置: 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页面间传数据)

  • 3大锦囊计,让移动营销更加高效!(3个锦囊)

    3大锦囊计,让移动营销更加高效!(3个锦囊)

  • 支付宝如何删除账单明细(支付宝如何删除转账联系人)

    支付宝如何删除账单明细(支付宝如何删除转账联系人)

  • 苹果手机怎么设置振动模式(苹果手机怎么设置手写)

    苹果手机怎么设置振动模式(苹果手机怎么设置手写)

  • oppo手机盲人模式怎么开启(oppo手机盲人模式怎么解锁)

    oppo手机盲人模式怎么开启(oppo手机盲人模式怎么解锁)

  • 手机录音没有声音怎么回事(手机录音没有声音怎么恢复正常)

    手机录音没有声音怎么回事(手机录音没有声音怎么恢复正常)

  • 8p支持18w快充吗(8p支持18w快充嘛)

    8p支持18w快充吗(8p支持18w快充嘛)

  • 电动车上牌照的公众号是什么(电动车上牌照的时候买的保险是什么保险)

    电动车上牌照的公众号是什么(电动车上牌照的时候买的保险是什么保险)

  • 拼多多资金限制多久(拼多多资金限制没有显示时间)

    拼多多资金限制多久(拼多多资金限制没有显示时间)

  • 打印图片不清晰怎么办(奔图打印图片不清晰)

    打印图片不清晰怎么办(奔图打印图片不清晰)

  • 广角镜头是多少mm(广角镜头是多少以下)

    广角镜头是多少mm(广角镜头是多少以下)

  • 已取消网页导航的解决方法(赛尔号登录器已取消网页导航)

    已取消网页导航的解决方法(赛尔号登录器已取消网页导航)

  • ldac蓝牙耳机有哪些(ldac蓝牙无线耳机)

    ldac蓝牙耳机有哪些(ldac蓝牙无线耳机)

  • 美版a1920支持电信吗(美版a1920是s版吗)

    美版a1920支持电信吗(美版a1920是s版吗)

  • 抖音两个账号能合并吗(抖音两个账号能发同样的作品吗)

    抖音两个账号能合并吗(抖音两个账号能发同样的作品吗)

  • 苹果x耗电快什么原因(iphonex手机耗电快)

    苹果x耗电快什么原因(iphonex手机耗电快)

  • 华为的畅连通话只有哪些手机能用(华为的畅连通话在哪里设置)

    华为的畅连通话只有哪些手机能用(华为的畅连通话在哪里设置)

  • 360N6lite支持应用分身吗(360n6 lite)

    360N6lite支持应用分身吗(360n6 lite)

  • 华为mate30听筒在哪里(华为mate30听筒在屏幕上吗)

    华为mate30听筒在哪里(华为mate30听筒在屏幕上吗)

  • 乐视手机怎么全选联系人(乐视手机怎么全部删除)

    乐视手机怎么全选联系人(乐视手机怎么全部删除)

  • 携程订票怎么取消附加产品(携程订票怎么取消全能保障服务)

    携程订票怎么取消附加产品(携程订票怎么取消全能保障服务)

  • 支付宝蓝牙音箱怎么用(支付宝蓝牙音箱微信可以用吗)

    支付宝蓝牙音箱怎么用(支付宝蓝牙音箱微信可以用吗)

  • ipone11是单卡还是双卡(苹果11是单卡的嘛?)

    ipone11是单卡还是双卡(苹果11是单卡的嘛?)

  • 微信突然白屏怎么处理(微信突然白屏了)

    微信突然白屏怎么处理(微信突然白屏了)

  • 怎么在电脑上下载微信到桌面(怎么在电脑上下载我的世界)

    怎么在电脑上下载微信到桌面(怎么在电脑上下载我的世界)

  • vivo手机定位查找(Vivo手机定位查询)

    vivo手机定位查找(Vivo手机定位查询)

  • ps镜像快捷键(ps中镜像快捷键)

    ps镜像快捷键(ps中镜像快捷键)

  • 苹果手机调时间在哪里调(苹果手机调时间字体怎么调)

    苹果手机调时间在哪里调(苹果手机调时间字体怎么调)

  • GCN经典论文笔记:Semi-Supervised Classification with Graph Convolutional Networks

    GCN经典论文笔记:Semi-Supervised Classification with Graph Convolutional Networks

  • 北京市增值税发票查验平台
  • 小微企业免征增值税申报表怎样填
  • 应收股利在资产负债表中填在哪里
  • 卷票发票校验码在哪里
  • 工程预付款需要什么资料
  • 向境外销售货物交增值税吗?
  • 对外投资企业利润回国意愿的政策建议
  • 没有预收账款应该用什么科目核算
  • 利税总额计算公式表
  • 电子发票不小心删掉了怎么办
  • 出售无形资产的会计科目
  • 公司外来人员进入公司
  • 政府部门纳税人识别号查询
  • 旅游业开票问题总结二
  • 计提的管理费用要结转吗
  • 未抵扣的进项税可以留底多久
  • 文化事业费征收
  • 两年前少缴的税款是否应补缴?
  • 一般个体户核定税率多少
  • 交付使用资产科目核算
  • 一般纳税人免税申报表怎么填
  • 毛利率与净利率的差额
  • 民间非营利组织会计制度及操作实务
  • 读会计没有考到证 能出来干什么
  • 捐赠支出税前扣除票据
  • win11安装更新时出现一些问题
  • 食品类发票入账属于什么科目
  • 公司向个人借款利息如何处理
  • windows安装无法继续,若要安装请重新启动
  • php smtp类
  • laravel使用
  • 为什么运输合同比租赁合同风险小
  • 资产负债表各项目年初余额栏内各项数字
  • input输入框非空验证
  • ai绘画网站
  • 前端面试题必问的题目
  • 新项目分哪几个阶段
  • day01-GUI坦克大战01
  • 投资收益主要包括两大类收益
  • 个税申报的本期收入是应发工资吗
  • mongodb与mysql相比的优缺点
  • sql实例命名规则
  • 支付所得税属于经营活动产生的现金流量吗
  • 所得税汇算清缴调整项目
  • 长期股权投资的账面价值怎么计算
  • 物业公司物业费税率是多少
  • 电费为什么计入其他应付款
  • 股权收购被收购方怎么做账
  • 什么混合销售
  • 销售加工费怎么记账
  • 待抵扣进项税额什么意思
  • 计提以前年度应付股利的分录
  • 应收账款客户少付款怎么记账
  • 公司名义送花篮属于什么费用
  • 福利费属于管理费用还是销售费用
  • 企业所得税季度交还要年交吗
  • 重要空白凭证是什么科目
  • XP系统怎么设置双屏幕
  • linuxsu命令作用
  • linux临时目录一般存在哪个文件夹
  • win7系统可移动的文件
  • win10升级失败怎么办
  • win7系统怎么访问共享文件
  • win10预览版和正式版区别
  • win10系统日历设置
  • python的模块和包
  • 浅谈一下新冠的好处
  • 深入理解两个大计重要论断心得体会
  • 黑马程序员学费多少钱2022
  • 关于Air端与android端的通信实现
  • linux shell实战
  • android自定义ui
  • javascript基础笔记
  • 浏览器兼容性问题是什么意思
  • 前端框架到底是什么
  • 稳岗补贴是否需在企业所得税汇算时调增
  • 实名办税的法律依据
  • 广东省电子税务局电话
  • 道路坡度最大限度不超过多少度
  • 深圳机打发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设