SORU
27 EYLÜL 2012, PERŞEMBE


iOS 6: portre ve diğerleri döndürmek için izin vermek için bazı görüşler kısıtlarım?

UINavigationController bir ayrıntıya bir arabirim sunmak için kullanan bir iPhone uygulaması var: İlk görünümü, o zaman başka bir, en fazla dört düzeyden daha derin. İlk üç görüş dikey konuma kısıtlı istiyorum ve sadece son görünüm yatay olarak döndürmek için izin verilmelidir. Üçüncü dördüncü görüntülemek dönen ve dördüncü görünüm yatay iken herşey portre geri döndürmek istiyorum.

İOS 5'te ben sadece benim görüşüme denetleyicileri her shouldAutorotateToInterfaceOrientation: EVET izin verilen yönleri dönmek için tanımlanmış. Her şey eğer cihaz görünümü denetleyicisi #3 #4 döndürme, yatay tutuluyor olsa bile dikey dönüş de dahil olmak üzere yukarıda açıklandığı gibi çalıştı.

İOS 6 tüm denetleyicileri yatay döndürmek için bir anlamı olmadığını bu kırılma görüntüleyin. 6 notlarında ki iOS

Daha fazla sorumluluk uygulaması ve uygulama temsilciye hareket ediyor. Şimdi, iOS kaplar (UINavigationController) çocuklarını autorotate olup olmadığını belirlemek için başvurun. [...] Sistem ister en üstteki tam ekran görünüm denetleyicisi (genellikle kök görünümü denetleyicisi) desteklenen arabirim yönelimleri her cihaz döner ya da ne zaman bir görünüm denetleyicisi sunulan tam ekran kalıcı sunum tarzı. Ayrıca, desteklenen yönelimleri eğer bu döner kumanda EVET shouldAutorotate onun yönteminden görünüm sadece alınır. [...] Sistemi olup olmadığını belirler bir yönlendirme tarafından desteklenmektedir kesişen tarafından döndürülen değeri app supportedInterfaceOrientationsForWindow: yöntem tarafından döndürülen değeri supportedInterfaceOrientations yöntemin en üstteki tam ekran denetleyicisi.

UINavigationController, MainNavigationController bir boolean benim malım verdi landscapeOK alt ve bu supportedInterfaceOrientations izin verilen yönelimleri döndürmek için kullanılır. Benim görüşüm her zaman denetleyicilerinin' bu gibi bir çizgi var viewWillAppear: yöntemleri

    [(MainNavigationController*)[self navigationController] setLandscapeOK:YES];

MainNavigationController istediğiniz davranışım söylemek.

Burada soru gelir:Ben şimdi portre modunda dördüncü görüşüm gidin ve telefonu ters çevirin eğer yatay döner. Şimdi sadece portre çalışması gerekiyordu, benim üçüncü görünüme dönmek için Geri düğmesine basın. Ama geri döndürmek değil. Nasıl böyle bir şey yapabilirim?

Denedim

    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]

üçüncü görünüm benim denetleyicisi viewWillAppear yöntem, ama hiçbir işe yaramıyor. Bu çağrı için yanlış bir yöntem ya da aramak için yanlış yer belki ya da tamamen farklı bir şekilde her şeyi uygulamak gerekir mi?

CEVAP
26 EKİM 2012, Cuma


Aynı sorun bende de vardı ve benim için çalışan bir çözüm bulundu. Bu işi çözebilmek içindeğilyeterli sizin UİNavigationController - (NSUInteger)supportedInterfaceOrientations uygulamak için. Ayrıca denetleyicisi denetleyicisi haşhaş sonra sadece portre-ilk olan #3, #4 Bu yöntemi uygulamak gerekir. Yani, benim UİNavigationController aşağıdaki kodu var:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    if (self.isLandscapeOK) {
        // for iPhone, you could also return UIInterfaceOrientationMaskAllButUpsideDown
        return UIInterfaceOrientationMaskAll;
    }
    return UIInterfaceOrientationMaskPortrait;
}

Görünüm #3, aşağıdakileri ekleyin denetleyicisi:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

Görünümü denetleyicileri için bir şey #1, #2 ve #4 eklemenize gerek yok. Bu benim için, sana yardımcı olacaktır umarım çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boburnham

    boburnham

    11 Temmuz 2006
  • stewmurray47

    stewmurray47

    1 Kasım 2006
  • TouchePro

    TouchePro

    27 EYLÜL 2007