1

将 cocos2d-objc 项目更新到 Xcode7、iOS9 后,我的 CCScrollView 实例损坏了。无法识别点击和平移手势 + xcode 引发控制台警告

警告:在情节提要/xib 中设置了一个手势识别器 (; target= <(action=handleTap:, target=)>>),以便一次添加到多个视图 (->; layer = >),这从来没有被允许,现在被强制执行。从 iOS 9.0 开始,它将被放置在它加载到的第一个视图中。

4

1 回答 1

1

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

-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];
}
于 2015-10-08T12:58:33.217 回答