起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3102|回复: 9

[处理中3] popMenu touch事件闪退

[复制链接]

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
发表于 2017-2-20 15:05:02 | 显示全部楼层 |阅读模式
在touchStart 事件中去  显示 popMenu就马上消失
在click事件中显示 popMenu 可以正常显示
这是什么情况,是bug 吗?
发表于 2017-2-20 15:43:13 | 显示全部楼层
组件的 属性 设置 dismissible="false"
试试看!表示点击空白处不关闭
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
 楼主| 发表于 2017-2-20 16:49:56 | 显示全部楼层
本帖最后由 ma1305249012 于 2017-2-20 17:01 编辑
liangyongfei 发表于 2017-2-20 15:43
组件的 属性 设置 dismissible="false"
试试看!表示点击空白处不关闭

....
回复 支持 反对

使用道具 举报

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
 楼主| 发表于 2017-2-20 17:00:12 | 显示全部楼层
liangyongfei 发表于 2017-2-20 15:43
组件的 属性 设置 dismissible="false"
试试看!表示点击空白处不关闭

把 dismissible="false"  加上不会消失了
但是效果就没了啊  ,我需要让 把点击空白处自动关闭啊
回复 支持 反对

使用道具 举报

发表于 2017-2-20 17:17:46 | 显示全部楼层
ma1305249012 发表于 2017-2-20 17:00
把 dismissible="false"  加上不会消失了
但是效果就没了啊  ,我需要让 把点击空白处自动关闭啊 ...

因为touch 事件,执行完实际上就会触发 click事件!
那么就是属于点击空白处了!当然就关闭了。。。,这样只能点击按钮的时候,通过代码将它关闭!

你仔细想想!想要实现的效果吧!试试touchEnd事件中是否可行?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
 楼主| 发表于 2017-2-20 17:32:33 | 显示全部楼层
liangyongfei 发表于 2017-2-20 17:17
因为touch 事件,执行完实际上就会触发 click事件!
那么就是属于点击空白处了!当然就关闭了。。。,这 ...

我想做成微信那样的长按弹出一个 PopMenu
点击其他地方关闭 popmenu,平台没有提供长按事件 所以我用定时器模拟一个长按事件
但是必须要使用 touch事件  click 事件没办法去模拟长按 , 听你这么一说我明白原因了我之前也这么想过
但是现在就比较棘手了
长按的设计就是 touchStart的时候 设定一个计时器 500毫秒以后 执行 长按要调用的函数
在touchEnd 和 touchMove中都 去 停止 计时器 ,如果要在写touchEnd 中的话  用户可能只是一个点击也会被误认为长按 现在也就是  click事件在从中作祟  调用show() 必须要在 click 事件中或者 click事件以后
回复 支持 反对

使用道具 举报

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
 楼主| 发表于 2017-2-20 17:56:58 | 显示全部楼层
本帖最后由 ma1305249012 于 2017-2-21 11:06 编辑

临时解决办法:
在touchStart中 将 dismissible 属性设置为false
  1. model.comp("popMenu1").dismissible=false
复制代码
在touchEnd中
  1. this.comp("popMenu1").dismissible=true
复制代码
这样的话 就可以 避开 click事件
如果谁有更好的解决办法请告诉我

回复 支持 反对

使用道具 举报

发表于 2017-2-21 11:58:36 | 显示全部楼层
ma1305249012 发表于 2017-2-20 17:56
临时解决办法:
在touchStart中 将 dismissible 属性设置为false
在touchEnd中这 ...

我问了一下!
在touchEnd 中return false即可!
就不会触发click事件了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

15

主题

63

帖子

201

积分

中级会员

Rank: 3Rank: 3

积分
201
QQ
 楼主| 发表于 2017-2-21 14:56:58 | 显示全部楼层
liangyongfei 发表于 2017-2-21 11:58
我问了一下!
在touchEnd 中return false即可!
就不会触发click事件了!

我试了一下,我打了个断点在没有进click事件之前 popMenu就已经消失了
还是不行啊
回复 支持 反对

使用道具 举报

发表于 2017-2-21 15:44:06 | 显示全部楼层
ma1305249012 发表于 2017-2-21 14:56
我试了一下,我打了个断点在没有进click事件之前 popMenu就已经消失了
还是不行啊
...

看组件源码/UI2/system/components/justep/popOver/popOver.js
应该是click 后才消失的!
不行那就还用你自己的方法把。。。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-30 22:22 , Processed in 0.113246 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表