【问题标题】:How does one create a scrollview with buttons without interfering with scrolling?如何在不干扰滚动的情况下创建带有按钮的滚动视图?
【发布时间】:2016-08-16 06:18:07
【问题描述】:

如何在不干扰滚动的情况下创建带有按钮的滚动视图?

我正在尝试通过创建一个滚动视图(仅水平滚动)并向其添加各种“按钮”来创建一个“工具栏”。

当滚动视图不包含任何按钮时,一切都很好 - 我可以轻松滚动到我心中的内容!问题是当我开始添加按钮时!

如果我的手指接触到没有按钮的区域 - 那么我可以毫无问题地滚动。

但是如果我的手指接触到有按钮的区域,那么拖动不会使滚动视图滚动!相反,按钮似乎“吸收”了触摸并将其注册为“取消”按钮按下!

如何修改我的代码,以便我可以滚动而不受按钮干扰?

这是我的代码:

        _mainToolbar = ui::ScrollView::create();
        _mainToolbar->setBounceEnabled(false);
        _mainToolbar->setDirection(ui::ScrollView::Direction::HORIZONTAL);
        _mainToolbar->setScrollBarPositionFromCorner(Vec2(4, 4));

    //…..

            ui::Button* button = ui::Button::create(imageName,"","",ui::Widget::TextureResType::PLIST);

            buttonSize = button->getContentSize();
            button->setAnchorPoint(Vec2(0.5, 0.5));
            button->setTouchEnabled(true);
            button->addTouchEventListener(CC_CALLBACK_2(Main::receiveButtonPressEvent, this));
            button->setSwallowTouches(true);

   // …

         _mainToolbar->addChild(button);


//…..


        _mainToolbar->setContentSize(mainToolContentSize);
        _mainToolbar->setInnerContainerSize(mainToolbarInnerContainerSize);

//….

void receiveButtonPressEvent(Ref *pSender,ui::Widget::TouchEventType type){          
    switch (type) {
        case ui::Widget::TouchEventType::BEGAN:{
            break;
        }

        case ui::Widget::TouchEventType::MOVED:{
            break;
        }

        case ui::Widget::TouchEventType::ENDED:{
            //Some code here if the button is pressed…”
            break;
        }

        case ui::Widget::TouchEventType::CANCELED:{
            break;
        }

        default:{
            break;
        }
    }//End switch(type)
}

编辑:我查看了 CPP 测试,但在测试中,按钮不执行任何操作 - 它们没有任何触摸事件侦听器,因此它们似乎不会干扰。我认为这是我的问题所在,但我不知道如何解决。

【问题讨论】:

    标签: c++ cocos2d-x cocos2d-x-3.0


    【解决方案1】:

    我认为你的问题出在这一行

     button->setSwallowTouches(true);
    

    改成

     button->setSwallowTouches(false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      相关资源
      最近更新 更多