ListView点击非可视区域 还可响应

ListView点击非可视区域 还可响应
按钮是自己封装的。 要怎么改才能 非可视区域 不能响应点击呢 求助:7:

:12::12::12:

:13:来个人嘛。

是空白位置点击穿透了造成相应触发么?如果是这种情况的话,可以在listView底层加透明图片,设置可交互,并且交互事件为空

Listview 中的看不见的区域 这个 方法也能 触发到按钮的事件。。。

如下图: - -!

---------------------------------- 上面 这个 区域是 看不见的

|---------------|-

按钮一

|---------------|-

按钮二

--------------------------------- 下面这个 区域是看不见的

|---------------|-

按钮三
---------------
按钮四
---------------

当点击 区域看不见的按钮也能触发到 点击事件 。

当 我滚动了列表 后是这样的

|---------------|-
| 按钮一 | --按钮一也响应了。。。
|---------------|
---------------------------------- 上面 这个 区域是 看不见的
|---------------|-

按钮二

|---------------|-

按钮三

--------------------------------- 下面这个 区域是看不见的
|---------------|-
| 按钮四 | – 这里也响应了。
|---------------|

就是这个方法

auto target = static_cast<UIButton*>(e->getCurrentTarget());
auto  locationInNode = target->convertToNodeSpace(t->getLocation());

auto s = target->getContentSize();

auto rect = Rect(0, 0, s.width, s.height);
if (rect.containsPoint(locationInNode)) {

目前没找到解决办法 求助

求解决办法 = =。。。卡了这么多天了。:6:

楼主可有处理掉这个问题 求方法

你可以将你的按钮继承ccwidget, 依赖ccwidget包装的触屏 可以保证出了listView不响应事件

如果这条不可行的话, 你还可以修改你的代码或者listView的代码 在触屏中判断listView的clippingNode区域来屏蔽掉点击

你可以阅读ccwidget代码 看看他是怎么屏蔽listView的点击

我是在非可视区域加一层透明度为0.01的可点击控件A 当我点击这块区域时 首先触发的是这个A 这时候我就加了一个bool值的锁 当下面的listview的点击事件触发时 我通过判断这个锁来决定要不要执行下面的代码 然后顺便把锁还原 虽然方法只是指标 但暂时没去找到更好的办法

自己封装的按钮怎么可能行啊。。。。。。。你必须要继承ui::widget

这的确是有这个问题,看不见的cell并没有设置visble为不可见所以还是会接受消息,这个只能改代码了,官方一直没时间(说好听点)去修复这个问题

有人解决了这个问题了吗? 求解答

8楼 wct525 的办法可行啊 就是在不该点击的地方加一个 透明的 没有事件的button 就屏蔽了下层的事件 虽然方法有点low 不过还挺好用

修改一个函数
Widget* Widget::getWidgetParent()
{
Widget* p = 0;
Node* node = getParent();
while ((!p)&&(node))
{
p = dynamic_cast<Widget*>(node);
node = node->getParent();
}
return p;
}