2012-10-13 8 views
10

Wdrażam interfejs zakupu aplikacji w aplikacji App StoreKit i chociaż wygląda na to, że SKStoreProductViewController obsługuje krajobraz na iPadzie, nie wydaje się, aby tak było w mojej aplikacji na iPhonie (jest uniwersalny).SKStoreProductViewController i GKHostedAuthenticateViewController nie mają trybów krajobrazu iPhone'a

Interfejs do SKStoreProductViewController jest tak ograniczony, że nie wydaje mi się, żeby w jakikolwiek sposób manipulować VC. Czy ktoś inny w tym uczestniczy? Jakieś obejścia?

Po uruchomieniu kodu, który działa na iPadzie, SKStoreProductViewController przychodzi z lewej strony, około cala, i zawiesza się do momentu zwolnienia. Wydaje się funkcjonalny, ale zakłóca VC, który pojawił się po zwolnieniu.

Oto kod:

// 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:^{ 
      }]; 
     } 
    }]; 

Nawet lepiej, mamy ten sam problem na GKHostedAuthenticateViewController który jest viewcontroller zwrócony z metody:

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

powtórzyć: oba te są w trybie portretu na iPhone'ach (ale nie iPadach) i zmuszają interfejs użytkownika do przejścia w tryb portretu. Po powrocie interfejs użytkownika Twojej aplikacji jest pomieszany.

+1

Po prostu spotkałem się z podobnym problemem. Robię aplikację na iPhone'a tylko w trybie poziomym. Rozpalanie 'SKStoreProductViewController' aby zobaczyć kolejną aplikację iOS w sklepie -' SKStoreProductViewController' nie wygląda dobrze - są trzy zakładki, które wybierają zawartość poniższego przewijania. Widok przewijania nie używa pełnej szerokości krajobrazu, co sprawia, że ​​wygląda ... "na wpół", nie sądzę, żeby było na to inne słowo. – Jonny

+1

@ Jonny i co więcej, na najnowszym ios 7, skstoreproductviewcontroller faktycznie zawiesza się w trybie poziomym – OMGPOP

Odpowiedz

5

Wpadłem na podobny problem. Moja uniwersalna aplikacja jest w krajobrazie, ale podczas gdy SKStoreProductViewController działa dość dobrze w krajobrazie na iPadzie, prezentuje wizualne usterki na iPhonie.

Moim rozwiązaniem było zmuszenie iPhone'a do zaprezentowania SKStoreProductViewController w pozycji pionowej. To trochę smutne, że nie ma tej samej orientacji co reszta aplikacji, ale jest to lepsze niż odcięcie połowy ekranu.

I dokonał tego za pomocą niestandardowego podklasa poniżej:

@interface SKPortraitStoreProductViewController : SKStoreProductViewController 
@end 

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

Ale awarie aplikacji na iPhone iOS 7. Nie mogę się doczekać rozwiązania. – Emmy

+0

Ja też. Czy ktoś zdołał zastosować SKStoreProductViewController na iOS 7 w aplikacji krajobrazowej? – Mayoneez

0

Spróbuj zmienić właściwość modalPresentationStyle na swojej SKStoreProductViewController przed przedstawieniem go.

Miałem szczęście, ustawiając go na UIModalPresentationPageSheet, który wydaje się całkiem dobrze pokrywać krajobraz iPada.

Powiązane problemy