2011-09-16 15 views
6

Bir iPhone uygulaması geliştiriyorum. Bu uygulamada, UIViewController (vc1) başka bir UIViewController (vc2) sunar. vc1, Dikey ve Yatay yönelimlerini destekler; vc2 yalnızca Dikey yönlendirmeyi destekler. shouldAutorotateToInterfaceOrientation: VC2 sunulduğundaUIViewController aygıt döndürme temsilci yöntemleri iOS5'te çağrılmadı

  1. , bu VC1 sorar ve bu EVET 2.In iOS5 willRotateToInterfaceOrientation :, didRotateFromInterfaceOrientation (Beta 7) döndürür: Bu dizinin çağrısında sakın. Ancak, bu iOS4'te gayet iyi çalışıyor. Bu iOS5'te bir hata mı?

Teşekkür ve Saygılarımızla, Deepa

Ben Apple'a bir hata bildirmişti ve şu cevabı aldık
+0

iOS 5 hala NDA'nın altında –

cevap

8

:

"Mühendislik belirlediğini bu konuda şu bilgilere dayanılarak amaçlandığı gibi davranır:

Sunum davranışı doğrudur - önceki sürümlerde farklı davrandıysa, bu bir hataydı: Davranışta beklenmedik bir beklenmedik değişiklik VC1'in işten çıkarılmasına neden olan ve artık geri arama dönüşlerine sahip olmayan ancak bağlantı noktası düzeni olacak rait.

Bir görünüm denetleyicinin kendini gösterdiğinde yönünüzü belirlemek için başka yollar da vardır. Çeşitli nedenlerden ötürü, rotasyon geri dönüşlerine güvenmek sorunlu olduğunu kanıtlamıştır. Genel olarak

, viewController dönme geri aramalar iki durumda oluşur: cam hiyerarşi

  • Karışık sınır sathı sunumları görünüşüdür kontrolörleri için

    1. cihazı yönlendirme değişir. (Alt kontrol cihazı sadece portreyi destekler, cihaz yataydır ve manzarayı destekleyen bir görüş kontrolörü sunulur.) Ancak bu bir yanlış anlaşılmadır.

    deneyin kullanarak viewWillLayoutSubviews: iOS5 benim app test ederken iOS 5." in

  • +0

    Bu sorunu nasıl giderdiniz? IOS 8 beta 5'te aynı sorunu yaşıyorum. –

    4

    ben benzer bir sorunu karşılaştığını kullanılan ana görünümü kumandam subviews düzeni berbat almak yönelim değiştirdiyseniz. kalıcı bir görünüm kontrolörü aktif iken.

    yaptığım şey ana denetleyicisi mevcut oryantasyon bayrağı depolamak için oldu. Bu bayrak, ana denetleyici iki yerde güncellenir

    1. willAnimateRotationT oInterfaceOrientation:
    2. viewWillLayoutSubviews (bu sadece iOS5 verildi)

    Saklı değer ile mevcut yönünü karşılaştırarak subviews ayarlamak için tüm mantığı mal. Farklıysa - depolanan yönlendirmeyi güncelleyin, alt görünümlerinizi güncelleyin.

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    {  
        // Any orientation is OK 
        return YES; 
    } 
    
    - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
        portrait = UIInterfaceOrientationIsPortrait(toInterfaceOrientation); 
    
        // Code to update subview layout goes here 
    } 
    
    -(void)viewWillLayoutSubviews 
    { 
        BOOL isPortraitNow = UIInterfaceOrientationIsPortrait(self.interfaceOrientation); 
    
        if(isPortraitNow != portrait) 
        {   
         DLog(@"Interfaceorientation mismatch!, correcting"); 
    
         portrait = isPortraitNow; 
    
         // Code to update subview layout goes here 
        } 
    } 
    
    İlgili konular