1

After updating cocos2d-objc project to Xcode7, iOS9 I have got my CCScrollView instances broken. Tap and pan gestures aren't recognized + xcode throws console warning

WARNING: A Gesture recognizer (; target= <(action=handleTap:, target=)>>) was setup in a storyboard/xib to be added to more than one view (->; layer = >) at a time, this was never allowed, and is now enforced. Beginning with iOS 9.0 it will be put in the first view it is loaded into.

duganets
  • 1,853
  • 5
  • 20
  • 31

1 Answers1

1

Problem had been fixed after patching CCScrollView and using UIView's api to manipulate current gestureRecoznigers list with corresponding API methods

-addGestureRecognizer: -removeGestureRecognizer:

- (void) onEnterTransitionDidFinish
{
    // Add recognizers to view
    UIView* view = [CCDirector sharedDirector].view;

    /*
    NSMutableArray* recognizers = [view.gestureRecognizers mutableCopy];
    if (!recognizers) recognizers = [NSMutableArray arrayWithCapacity:2];
    [recognizers insertObject:_panRecognizer atIndex:0];
    [recognizers insertObject:_tapRecognizer atIndex:0];

    view.gestureRecognizers = recognizers;
     */
    [view addGestureRecognizer:_panRecognizer];
    [view addGestureRecognizer:_tapRecognizer];

    [super onEnterTransitionDidFinish];
}

- (void) onExitTransitionDidStart
{
    // Remove recognizers from view
    UIView* view = [CCDirector sharedDirector].view;

    /*NSMutableArray* recognizers = [view.gestureRecognizers mutableCopy];
    [recognizers removeObject:_panRecognizer];
    [recognizers removeObject:_tapRecognizer];

    view.gestureRecognizers = recognizers;*/
    [view removeGestureRecognizer:_panRecognizer];
    [view removeGestureRecognizer:_tapRecognizer];

    [super onExitTransitionDidStart];
}
duganets
  • 1,853
  • 5
  • 20
  • 31
  • 1
    This has been corrected in my clone of the v3.4.9 branch and is awaiting a merge via a pull request: https://github.com/pkclsoft/cocos2d-objc/commit/bdd260d5e56cceb17e6e78afb15563751c07eb57 – PKCLsoft Dec 24 '15 at 04:05