2012-07-01 56 views
0

我已經在其他地方發佈了這個問題,但因爲這是一個很好的社區,我在這裏也這樣做。iPod Touch的iOS 5.1.1不打電話viewDidDisappear:動畫

首先,我使用Cocos2D 2.0-gles20將多人/團隊導向的遊戲放在一起。

我已經將GameKitHelper集成到應用程序中。迄今爲止,它已經在我的iPhone4和iPad2以及模擬器上工作得很好,但是現在當我嘗試在iPod Touch 4上使用它時,我在[CCDirectorIOS startAnimation]中獲得斷言,因爲應用程序正在獲取viewWillAppear,當它應該當它應該時,並且沒有呼叫viewDidDisappear。

這個問題的重要原因是CCDirectorIOS類中的這些方法會導致Cocos2D在另一個UIKit視圖位於前面時啓動/停止動畫。這是我用Cocos2D-0.99管理自己的東西,但2.0版本在導演中處理得很好,因此每個應用程序都無需專門處理它。

的GameKitHelper類具有用於推動GKMatchmakerViewController到屏幕上的以下方法:

-(void) showMatchmakerWithInvite:(GKInvite*)invite 
{ 
    GKMatchmakerViewController* inviteVC = [[[GKMatchmakerViewController alloc] initWithInvite:invite] autorelease]; 
    if (inviteVC != nil) 
    { 
     inviteVC.matchmakerDelegate = self; 
     [self presentViewController:inviteVC]; 
    } 
} 

-(UIViewController*) getRootViewController 
{ 
    return [CCDirector sharedDirector]; 
} 

-(void) presentViewController:(UIViewController*)vc 
{ 
    UIViewController* rootVC = [self getRootViewController]; 
    [rootVC presentModalViewController:vc animated:YES]; 
} 

-(void) dismissModalViewController 
{ 
    UIViewController* rootVC = [self getRootViewController]; 
    [rootVC dismissModalViewControllerAnimated:YES]; 
} 

當我打電話showMatchmakerWithInvite,上iPhone4的等我看到viewDidDisappear呼叫:所述CCDirectorIOS對象在其上停止動畫。這可以。當GK視圖消失時,我看到一個對viewWillAppear的調用,它將重新開始動畫。甜。

但是,在iPod Touch上,運行完全相同的項目時,未調用viewDidDisappear,但調用viewWillAppear時,在GK視圖消失之前。

我無法理解爲什麼會有差異。所有設備都運行iOS 5.1.1。

這幾乎就好像iPod Touch的行爲不同,但我覺得很難相信。我的另一個想法是,我正在考慮一個時間問題,但我放了一些代碼來允許應用程序繼續運行,即使出現問題,但調用viewDidDisappear從未發生過。

我可以解決這個問題,我想通過自己管理動畫的開始/停止,但我寧願不要自定義Cocos2D代碼。

有沒有人有任何想法?

感謝

回答

0

嗯,是急性子的人,我,它,而不是留給別人和別的工作,我螺帽固定它。

我發現有問題的iPod Touch設備在限制應用程序中禁用了多玩家遊戲。這似乎導致GK視圖不能正確顯示,結果像viewDidDisappear這樣的事件:viewWillAppear:不會像我期望的那樣發生。

因此,我已經能夠恢復我在Cocos2D代碼中的所有調整和工具,並且簡單地對GameKitHelper類應用更正以確保如果諸如多玩家的功能被禁用,則玩家不能夠請求他們。