关于3.0下uibutton 点击监听

auto dispatcher = Director::getInstance()->getEventDispatcher();
auto main = cocostudio::GUIReader::getInstance()->widgetFromJsonFile("/studio_ui/MainScene_1.ExportJson");
this->addChild(main);
main->setTouchEnabled(false);
auto btn_multi = main->getChildByName(“Button_multi”);
((Button*)btn_multi)->addTouchEventListener(this, toucheventselector(MainScene::EnterMultiMode));
auto btn_single = main->getChildByName(“Button_single”);
auto btn_setting = main->getChildByName(“Button_setting”);
auto btn_help = main->getChildByName(“Button_Help”);

auto single_listener = EventListenerTouchOneByOne::create();
single_listener->setSwallowTouches(true);
single_listener->onTouchBegan = ](Touch* touch,Event* event)  
{  
    auto target = static_cast<Sprite*>(event->getCurrentTarget());
    Point locationInNode = target->convertToNodeSpace(touch->getLocation());
    Size s = target->getContentSize();
    Rect* rect = new Rect(0, 0, s.width, s.height);
    if(rect->containsPoint(locationInNode)) {
        return true;
        
    } else {
        return false;
    }
};  


single_listener->onTouchEnded = =](Touch* touch, Event* event) 
{
    // 获取事件所绑定的 target 
    log("enter single mode");
    Director::getInstance()->replaceScene(CopySelectScene::scene());
};

dispatcher->addEventListenerWithSceneGraphPriority(single_listener, btn_single);

点击btn_single根本进入不到onTouch中 相反点击除了这个按钮的其他位置 反而能进入onTouch.求解?

找到原因了,将ui中所有的组件的交互全取消就可以点击了,具体原因不清楚是为什么