No response after touching a ccsprite

I create a button which is a ccsprite. However, it has no response although I touch it. What wrong with my code?

The code of the button:

#include "pauseButton.h"
#include "pauseLayer.h"
using namespace cocos2d;
pauseButton::pauseButton() {
}

pauseButton::~pauseButton() {
}

void pauseButton::onEnter() {
    CCDirector* pDirector = CCDirector::sharedDirector();
    pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
    CCSprite::onEnter();
}

void pauseButton::onExit() {
    CCDirector* pDirector = CCDirector::sharedDirector();
    pDirector->getTouchDispatcher()->removeDelegate(this);
    CCSprite::onExit();
}

pauseButton* pauseButton::touchSpriteWithFile(const char *file) {
    pauseButton *sprite = new pauseButton();
    if (sprite && sprite->initWithFile(file)) {
        sprite->autorelease();
        return sprite;
    }
    return NULL;
}

bool pauseButton::initWithFile(const char *file) {
    CCSprite::initWithFile(file);
    return true;
}

CCRect pauseButton::rect() {
    CCSize size = getTexture()->getContentSize();
    return CCRectMake(-size.width/2, -size.height/2, size.width, size.height);
}

bool pauseButton::containsTouchLocation(CCTouch *touch) {
    return rect().containsPoint(convertTouchToNodeSpaceAR(touch));
}

bool pauseButton::CCTouchBegan(CCTouch *touch, CCEvent *event) {
    if (containsTouchLocation(touch))
        return true;
    return false;
}

void pauseButton::CCTouchMoved(CCTouch *touch, CCEvent *event) {
}

void pauseButton::CCTouchEnded(CCTouch *touch, CCEvent *event) {
    pauselayer = pauseLayer::create();
    CCDirector::sharedDirector()->pause();
    this->getParent()->getParent()->addChild(pauselayer);
}

The code in the layer class:

bool HelloWorld::init() {
...
...
this->setTouchEnabled(true);
pauseButton *pausebutton = pauseButton::touchSpriteWithFile(button_red.png);
pausebutton->setPosition(ccp(size.width/2, size.height/2));
this->addChild(pausebutton);
...
...
}