CocoStudio UI 中按钮被隐藏仍然会捕捉触摸

CocoStudio UI 中按钮被隐藏仍然会捕捉触摸

当上层按钮被隐藏时
后面图层的同屏幕位置按钮仍然不会响应触摸

这个难道不是BUG吗?

使用setEnabled

楼主你好,
屏蔽按钮点击响应,请调用 setTouchEnabled(false)

这绝对是个设计问题。

有的时候需要把几个按钮放到一个容器层管理,按照需要通过隐藏容器层来隐藏这些按钮。这个时候这部分按钮时不应该响应的。
如果只能通过setTouchEnabled 禁用按钮,就太麻烦了!

+1+1+1+1+1+1+1

这样修改
bool Widget::onTouchBegan(Touch *touch, Event *unusedEvent)
{

  • if (!isVisible()) {
  •   return false;
    
  • }

    }

有道理!希望ccs 团队可以采纳!

这个方法有局限,子控件依然会被点到

有别的办法吗?

试了一下这个办法暂时可用,但是这样效率太低了。还是希望从结构上解决这个问题,真的很不爽!
我的办法:

bool Widget::onTouchBegan(CCTouch *touch, CCEvent *unused_event)
{
_hitted = false;
if (isEnabled() && isTouchEnabled())
{
_touchStartPos = touch->getLocation();
if(hitTest(_touchStartPos) && clippingParentAreaContainPoint(_touchStartPos))
{
_hitted = true;
}
}

  • Widget* visibleTestParent = this;
  • while (visibleTestParent)
  • {
  •    if (!visibleTestParent->isVisible())
    
  •    {
    
  •        _hitted = false;
    
  •    }        
    
  •    visibleTestParent = visibleTestParent->getWidgetParent();
    
  • }
if (!_hitted)
{
    return false;
}
setFocused(true);

支持楼主!希望ccs 团队可以采纳!