duganets
duganets

Reputation: 1893

cocos2d-objc v3.4.9 CCScrollView problems after migrating to Xcode7, iOS9

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.

Upvotes: 1

Views: 234

Answers (1)

duganets
duganets

Reputation: 1893

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];
}

Upvotes: 1

Related Questions