cocos2d-objc v3.4.9迁移到Xcode7,iOS9后的CCScrollView问题

时间:2015-10-08 12:58:33

标签: objective-c cocos2d-iphone ios9 ccscrollview

将cocos2d-objc项目更新为Xcode7,iOS9后,我的CCScrollView实例被破坏了。点击和平移手势无法识别+ xcode抛出控制台警告

  

警告:手势识别器(; target =<(action = handleTap:,   target =)>>)是在storyboard / xib中设置的   被添加到多个视图( - &gt ;; layer =   >)一次,这是永远不允许的,而且是   现在强制执行。从iOS 9.0开始,它将放在第一个视图中   它被装入。

1 个答案:

答案 0 :(得分:1)

在修补CCScrollView并使用UIView的api操作当前的gestureRecoznigers列表并使用相应的API方法后,问题已得到解决

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