Sto eseguendo Xcode 4.3.3 e sto scegliendo iOS 5.1. Sto tentando di includere la funzionalità di Game Center in un gioco.Comportamento bizzarro del GameKit. Qualcun altro vedendo questo?
Quando autenticare l'GKLocalPlayer l'utente è presentato con la Accedi al Game Center visualizzazione degli avvisi o dimostrato di essere loggato. Finora questo è tutto bene, ma se l'utente preme il Crea nuovo account tasto poi eventuali vista aperta modale vengono spostati dietro il controller della vista radice e il seguente errore viene sputo dalla console:
chiamate bilanciati per iniziare/transizioni aspetto finali per < GKModalRootViewController: indirizzo di memoria >.
Ho provato a spostare il codice di autenticazione GKLocalPlayer tra il delegato dell'app e il controller di visualizzazione radice. Ho anche provato a implementare l'autenticazione in un nuovo progetto vuoto. L'ho provato con e senza Storyboard e ARC. In tutti questi casi i risultati sono stati gli stessi: le modalre nascoste dietro il controller della vista radice e l'errore fornito.
Ecco il metodo di autenticazione GKLocalPlayer sto chiamando da applicativi mia applicazione del delegato: didFinishLaunchingWithOptions: metodo:
- (void)authenticateLocalPlayer
{
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
[localPlayer authenticateWithCompletionHandler:^(NSError *error) {
if (localPlayer.isAuthenticated) {
// Perform additional tasks for the authenticated player.
} else {
// Disable Game Center features.
}
if (error) {
// Handle error.
}
}];
}
Here è uno screenshot di esso. In questa immagine il controller della vista radice ha uno sfondo con un valore alfa del 50%. Il modal è stato spostato dietro il controllore della vista radice da questo bug.
This stackoverflow question contiene l'unico riferimento a questo errore (relativo a GKModalRootViewController) che riesco a trovare e che non si adatta poiché (a.) Non sto utilizzando cocos2d. (b.) Accade se eseguo o meno un seguito e non sto toccando viewWillAppear: o viewDidAppear :. (c.) Non è stata data una risposta accettabile.
This question e this one sembrano coinvolgere lo stesso problema (con la gerarchia della vista che viene distrutta) ma non hanno risposta e non menzionano il messaggio di errore della console.
Questo succede a chiunque altro? Qualche idea su cosa potrebbe causare questo?
UPDATE 1: Sono arrivato al punto di mettere il codice di autenticazione in un IBAction collegato a un pulsante nella vista modale in modo da evitare eventuali conflitti di inizializzazione. Non ha aiutato.
UPDATE 2: Ho provato a spostare il codice di autenticazione in una coda di sfondo GCD. i risultati erano gli stessi.
Here è il progetto di test (che è già pronto per GameCenter con l'ID bundle della mia app).
A prova:
- Log di Game Center sul test del dispositivo/simulatore (se siete loggato).
- Costruisci ed esegui l'app.
- Premere il pulsante Info.
- Premere Autenticare.
- Quando viene visualizzato l'avviso Accedi al centro giochi, premere Crea nuovo Account.
- Premere Annulla.
- Il messaggio "Squilibri chiamate ..." viene visualizzato nella console? La vista modale è scomparsa (con il pulsante Autentica)?
- Premere il pulsante Info.
- Il display modale è di nuovo disponibile?
Hai ancora riscontrato questo problema? – NathanChristie
Il problema persiste in iOS 5.1.1, tuttavia iOS 6 ha risolto il problema. – Endersstocker