Я имею дело с приложением Cocos2D для iPhone с таблицей лидеров Game Center. В этом приложении пользователь должен рисовать линии в ландшафтном режиме (iPhone горизонтальный). Бывает, что касание может начаться за пределами экрана (в левой части рядом с микрофоном) и продолжиться внутри экрана. Приложение корректно начинает рисовать, как только палец входит в рамки экрана. Однако, если я покажу вид с таблицей лидеров (которая на самом деле изображена правильно) и вернусь в игру, приложение перестанет обрабатывать касания, которые начинаются за пределами экрана. На самом деле он перестает обрабатывать только те, которые начинаются в верхней части экрана, как будто вверху есть строка пикселей, которые не учитываются.
Я начал доску лидеров следующим образом:
- (void) showLeaderboard
{
GKLeaderboardViewController *leaderboardController = [[GKLeaderboardViewController alloc] init];
if (leaderboardController != nil){
tempVC=[[UIViewController alloc] init] ;
leaderboardController.leaderboardDelegate = self;
[[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
[tempVC presentModalViewController:leaderboardController animated:YES];
tempVC.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f));
tempVC.view.bounds = CGRectMake(0, 0, 480, 320);
tempVC.view.center = CGPointMake(240, 160);
[leaderboardController release];
}
}
и отпустите его следующим образом:
-(void) leaderboardViewControllerDidFinish: (GKLeaderboardViewController *) viewController{
[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view.superview removeFromSuperview];
[tempVC.view removeFromSuperview];
[tempVC release];
}