Maybe Using CCTargetedTouchDelegate is better than CCMenu?

CCMenu doesn’t allow me to add the sprites to a batch node so I am currently using a button class. It’s simply a touch rectangle that you place on top of the button sprite.
—————————————UIButton.h————————————— //custom button
#ifndef UI_BUTTON_H
#define UI_BUTTON_H

class UIButton : public CCNode, public CCTargetedTouchDelegate
{
public:
UIButton();
UIButton;
\ virtual\ void\ onEnter;
\ virtual\ void\ onExit;
\ virtual\ bool\ ccTouchBegan;
\ virtual\ void\ ccTouchMoved;
\ virtual\ void\ ccTouchCancelled;
\ virtual\ void\ ccTouchEnded;
\ void\ reset;
\ CC_SYNTHESIZE;
private:
\ virtual\ void\ onButtonPress\ =\ 0;
};
#endif
————————————UIButton.cpp——————————————
#include\ “UIButton.h”
UIButton::UIButton
{
\ touchRect\ =\ CCRectZero;
}
UIButton::
UIButton()
{
}

bool UIButton::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
CCPoint p = touch~~>getLocation;
if )
{
onButtonPress;
return true;
}
return false;
}
void UIButton::ccTouchMoved
{
}
void UIButton::ccTouchCancelled
{
}
void UIButton::ccTouchEnded
{
}

void UIButton::onEnter
{
CCDirector* pDirector = CCDirector::sharedDirector;
pDirector~~>getTouchDispatcher()>addTargetedDelegate;
CCNode::onEnter;
}
void UIButton::onExit
{
CCDirector* pDirector = CCDirector::sharedDirector;
pDirector
>getTouchDispatcher()>removeDelegate;
CCNode::onExit;
}
void UIButton::reset
{
}
———————————————————————————

What do you guys think?