Egret社区
1银子
问题是这样的,我给list添加了this.fb_content_list.addEventListener(eui.ItemTapEvent.ITEM_TAP,this.onClick,this);这个事件,就是item的点击事件,然后我的item里面也有个按钮,我添加了this.btn.addEventListener(egret.TouchEvent.TOUCH_TAP,this.btnEvent,this);这个事件,对了。说一下,list里面的数据是ItemRenderer的对象,我自己item继承了它,so,我想要的效果是,没点击到item上的btn时,是响应this.onClick这个方法的,而当点击item上的按钮的时候是响应this.btnEvent这个方法,但是现在出现了。我点击了item上的按钮的时候这两个方法都响应了。求问官方是这么设计的,还是有属性可以设置?我自己想到了一个给item加变量进行控制,可以避免这种情况出现。我想请教一个官方的解决方案?

最佳答案

查看完整内容

楼上正解。本质上ItemTap事件是在ItemRenderer上的,而Button在ItemRenderer里,所以Button也算是ItemRenderer的一部分,点到Button当然也算是点到了ItemRenderer。这是事件流本身的定义。你可以在Button里阻止事件冒泡,不会传送到父级ItemRenderer,ItemTap就抛不出来了。注意的是,这里比较特别,ItemTap实际上监听不是TouchTap的冒泡事件,而是TouchEnd事件。所以你应该在Button上监听TouchEnd,然后阻止TouchEnd的冒泡,ItemT ...
分享到 :
0 人收藏

3 个回复

倒序浏览
dom  圆转纯熟 | 2016-1-14 21:11:31
楼上正解。本质上ItemTap事件是在ItemRenderer上的,而Button在ItemRenderer里,所以Button也算是ItemRenderer的一部分,点到Button当然也算是点到了ItemRenderer。这是事件流本身的定义。你可以在Button里阻止事件冒泡,不会传送到父级ItemRenderer,ItemTap就抛不出来了。注意的是,这里比较特别,ItemTap实际上监听不是TouchTap的冒泡事件,而是TouchEnd事件。所以你应该在Button上监听TouchEnd,然后阻止TouchEnd的冒泡,ItemTap才会被阻止掉。
昱少弋  登堂入室 | 2016-1-15 09:42:24
之前我问过,button的touch_start或touch_end方法里,阻止事件冒泡 event.stopPropagation();
然后在button的touch_start里或touch_tap里做逻辑处理都可以。
liu1515123582  登堂入室 | 2016-1-15 13:59:18
多谢楼上的各路大神
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部