2012-10-13 54 views
10

Estoy implementando la interfaz de compra de la aplicación en la aplicación StoreKit y aunque parece que el SKStoreProductViewController maneja el paisaje en el iPad, no parece que lo haga para mi aplicación en iPhone (es universal).SKStoreProductViewController y GKHostedAuthenticateViewController no tienen modos de paisaje de iPhone

La interfaz para SKStoreProductViewController es muy limitada, no parece que pueda manipular el VC de ninguna manera. ¿Alguien más se ha topado con esto? ¿Alguna solución temporal?

Cuando ejecuto el código que funciona en el iPad, el SKStoreProductViewController viene del lado izquierdo, aproximadamente una pulgada, y cuelga hasta que se lo descarta. Parece funcional, pero arruina el VC que apareció al despido.

Aquí está el código:

// Set up the store vc (creating it if not already done) 
if (self.storeVC == nil) self.storeVC = [[SKStoreProductViewController alloc] init]; 
self.storeVC.delegate = self; 
NSDictionary *params = [NSDictionary dictionaryWithObject:appID forKey:SKStoreProductParameterITunesItemIdentifier]; 

// Set up a HUD in case connecting to the store takes a while 
[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 

[self.storeVC loadProductWithParameters:params 
         completionBlock:^(BOOL result, NSError *error) { 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 
     if (result) { 
      [self presentViewController:self.storeVC animated:NO completion:^{ 
      }]; 
     } 
    }]; 

Aún mejor, estamos teniendo el mismo problema en el GKHostedAuthenticateViewController que es el viewcontroller volvió del método:

GKLocalPlayer.authenticateHandler = ^(UIViewController *loginVC, NSError *error) {}; 

Reiterar: ambos están en modo retrato en iPhones (pero no en iPads) y obligan a la IU a entrar en modo retrato. Al regresar, la IU de su aplicación está en mal estado.

+1

Acabo de encontrarme con un problema similar ahora. Estoy haciendo una aplicación para iPhone en modo solo paisaje. Al encender un 'SKStoreProductViewController' para ver otra aplicación de iOS en la tienda,' 'SKStoreProductViewController' no se ve realmente bien, hay tres pestañas que seleccionan el contenido de la vista de desplazamiento a continuación. La vista de desplazamiento no usa el ancho total del paisaje, lo que hace que se vea ... "a medias", no creo que haya otra palabra para eso. – Jonny

+1

@Jonny y, lo que es más, en el último ios 7, el controlador skstoreproductview se bloquea en modo apaisado – OMGPOP

Respuesta

5

Me encontré con un problema similar. Mi aplicación universal está en el paisaje, pero mientras que el SKStoreProductViewController funciona bastante bien en el paisaje en el iPad, presenta fallas visuales en el iPhone.

Mi solución fue forzar al iPhone a presentar SKStoreProductViewController en retrato. Es un poco triste que no tenga la misma orientación que el resto de la aplicación, pero es mejor que cortar la mitad de la pantalla.

que logra esto mediante el uso de la subclase personalizada a continuación:

@interface SKPortraitStoreProductViewController : SKStoreProductViewController 
@end 

@implementation SKPortraitStoreProductViewController 
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
     return UIInterfaceOrientationPortrait; 
    else 
     return [super preferredInterfaceOrientationForPresentation]; 
} 
@end
+0

Pero la aplicación se bloquea en el iPhone iOS 7. Todavía estoy buscando la solución. – Emmy

+0

Yo también. ¿Alguien ha tenido éxito al usar SKStoreProductViewController en iOS 7 en la aplicación horizontal? – Mayoneez

0

Intente cambiar la propiedad modalPresentationStyle en su SKStoreProductViewController antes de presentarlo.

He tenido buena suerte al configurarlo en UIModalPresentationPageSheet, que parece cubrir bastante bien el caso del iPad del paisaje.

Cuestiones relacionadas