CCNode+SFGestureRecognizers is a category designed to simplify adding UIGestureRecognizers support in cocos2d. It removes the need to change cocos2d source code so that you can update your cocos2d anytime new versions are released.
- iOS 4.0 (Xcode 4.3, Apple LLVM compiler 3.1)
- cocos2d version 1.x or 2.x works fine.
CCNode+SFGestureRecognizers automatically works with both ARC and non-ARC projects through conditional compilation. There is no need to exclude CCNode+SFGestureRecognizers files from the ARC validation process, or to convert CCNode+SFGestureRecognizers using the ARC conversion tool.
If you are using CocoaPods, you can just add CCNode+SFGestureRecognizers to your Podfile. If you didn't use it before I'm recommending you check it out: http://cocoapods.org/
To use the CCNode+SFGestureRecognizers category in an app, just drag the category files (demo files and assets are not needed) into your project. Include the CCNode+SFGestureRecognizers.h in your Prefix.pch file so that you can use it everywhere.
CCNode+SFGestureRecognizers adds following properties / methods to CCNode:
@property (nonatomic, assign) BOOL isTouchEnabled;
Defines if touches are enabled, if you disable it no gesture will be working.
@property (nonatomic, assign) CGRect touchRect;
Defines touchable rectangle in node local coordinate space.
- (void)addGestureRecognizer:(UIGestureRecognizer*)aGestureRecognizer;
Adds gesture recognizer to node.
- (void)removeGestureRecognizer:(UIGestureRecognizer*)aGestureRecognizer;
Removes gesture recognizer from node.
- (NSArray*)gestureRecognizers;
Returns all gesture recognizers that are bound to this node.
- (BOOL)isPointTouchableInArea:(CGPoint)pt;
Tests if point is touchable in selected area without testing children nodes (node must be visible and running to pass this check, isTouchEnabled also has to be set to YES )
- (BOOL)isNodeInTreeTouched:(CGPoint)pt;
Tests if points is touchable in a node or any of its children nodes.
- (BOOL)isPointInArea:(CGPoint)pt;
Tests if point is inside in selected area without testing children nodes (node must be visible and running to pass this check, ignores isTouchEnabled ).
CCNode+SFGestureRecognizers also adds this property in UIGestureRecognizer class:
@property (nonatomic, readonly) CCNode *node;
Node that this gesture is added to.