我已經在其他地方發佈了這個問題,但因爲這是一個很好的社區,我在這裏也這樣做。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代碼。
有沒有人有任何想法?
感謝