It seems that touchEnded is not being called if you don't create/override the touchBegan method. I tried this in the v3 RC3 of cocos2d. Is this the expected behavior or a bug? Thanks!
this is intended. as all nodes are now capable of handling touches, you must decide which nodes will handle them.
the precondition for nodes to accept touches is to override touchBegan:withEvent: (even an empty implementation).
more here: http://www.cocos2d-iphone.org/api-ref/3.0-rc1/Classes/CCResponder.html#//api/name/touchBegan:withEvent: