Game Center - ориентация - PullRequest
       3

Game Center - ориентация

4 голосов
/ 29 октября 2010

Cocos2d версия: v0.99.04

Я добавляю Game Center в свое текущее приложение и обнаружил некоторый код для открытия GKMatchmakerViewController. Кажется, он работает хорошо, за исключением случаев, когда его отклоняют, он меняет ориентацию в симуляторе на портретную. Игра работает только в ландшафте. Я поворачиваю устройство обратно в альбомную ориентацию, и все сцены cocos2d по-прежнему работают нормально, но если я открываю средство оповещения или одноранговое устройство выбора, они открываются в портретном режиме. Я могу открывать и закрывать сцены, но теперь все они будут отображать это поведение. Это также происходит с использованием реального устройства.

// *.h
UIViewController *tempVC;

// *.m

// Open

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;

GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;

tempVC=[[UIViewController alloc] init];
[[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
[tempVC presentModalViewController: mmvc animated: YES];    

// Close

[tempVC dismissModalViewControllerAnimated:YES];
[tempVC.view removeFromSuperview];
[tempVC release];

Как только я нажимаю на dismissModalViewControllerAnimated, симулятор вращается.

Заранее спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 марта 2013

Поместите это в AppDelegate.m перед @implementation

@interface UINavigationController (Private)

- (NSUInteger)supportedInterfaceOrientations;
- (BOOL)shouldAutorotate;

@end

@implementation UINavigationController (Private)

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (BOOL)shouldAutorotate
{
    return YES;
}

@end
0 голосов
/ 04 сентября 2011

У меня была та же проблема (без использования cocos2d), и я решил ее, создав подкласс UILiewController, к которому привязан Game Center:

@interface GameCenterViewController : UIViewController
{
}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;

@end


@implementation GameCenterViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    // Does it match my screenOrientation?
        if (sceneOrientation == (UIDeviceOrientation)toInterfaceOrientation)
        return YES;

    return NO;
}

@end
...