1

iOS 6 で、プレーヤーがサインインしていないときに GameCenter を使用しようとすると、タイトルに入力したテキストを含む UIAlertView がポップアップ表示されます。「ゲームセンター利用不可プレイヤーはサインインしていません」。私の質問は、その UIAlertView を自分のインターフェイス要素で他のものに置き換えることは可能ですか?

[GKLocalPlayer localPlayer].authenticateHandler = ^(UIViewController *viewController, NSError *error)
            {
                    if ([[GKLocalPlayer localPlayer] isAuthenticated])
                    {
                        NSLog(@"[gamecenter] player authenticated: %@\n", [GKLocalPlayer localPlayer]);
                        [self gamecenterLoadAchievements];

                        [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite)
                        {
                            // Insert application-specific code here to clean up any games in progress.
                            if (acceptedInvite)
                            {
                                NSLog(@"Accepted invitation");

                                isInvited = YES;

                                [[GameLevel sharedGameLevel] setCurrentGameMode:GameModeGameCenter];

                                GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease];
                                mmvc.matchmakerDelegate = self;

                                AppDelegate * delegate = (AppDelegate *) [UIApplication sharedApplication].delegate;
                                [delegate.viewController presentModalViewController:mmvc animated:YES];

                            }
                            else if (playersToInvite)
                            {
                                NSLog(@"Players to invite");

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

                                GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
                                mmvc.matchmakerDelegate = self;
                                [presentingViewController presentModalViewController:mmvc animated:YES];
                            }

                        };
                    }
                    else
                    if (viewController)
                    {
                        AppDelegate          *delegate        = (AppDelegate *) [UIApplication sharedApplication].delegate;
                        NavigationController *_viewController = delegate.viewController.navController;

                        [_viewController presentViewController: viewController animated: YES completion:nil];
                    }
                    else
                    {
                        NSLog(@"[gamecenter] %@\n", error);

                        gcLoginFailed = YES;
                        if ([[error domain] isEqualToString:GKErrorDomain])
                        {
                            if ([error code] == GKErrorNotSupported)
                                gcIsSupported = NO;
                            else
                                if ([error code] == GKErrorCancelled)
                                    gcLoginCancelled = YES;
                        }
                    }
            };
4

1 に答える 1

0

UIAlertView を使用しないでください UIButton で独自のグラフィックを使用します

認証に disableGameCenter メソッドを使用している場合は、使用しないでください。代わりに、整数 ilk int isPlayerSignedIn を使用してください。そして、それを 1 または 0 に戻すだけです。そう ;

if (isPlayerSignedIn==0) {

   //display your graphics

} 
else do nothing .

編集 :

else
if (viewController)
{
    AppDelegate          *delegate        = (AppDelegate *) [UIApplication sharedApplication].delegate;
    NavigationController *_viewController = delegate.viewController.navController;
    [_viewController presentViewController: viewController animated: YES completion:nil];
}

これらのコード行を使用しないと、その UIAlertView を取得できないことがわかります

次に、「ゲームセンターが利用できません」というスタッフを実装できますが、さらにログイン画面も実装する必要があります。

于 2012-12-05T18:03:29.777 に答える