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



来个人嘛。
是空白位置点击穿透了造成相应触发么?如果是这种情况的话,可以在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)) {
目前没找到解决办法 求助
求解决办法 = =。。。卡了这么多天了。
楼主可有处理掉这个问题 求方法
你可以将你的按钮继承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;
}