2011-09-16 14 views
6

में कॉल नहीं किया जा रहा है, मैं एक आईफोन एप्लीकेशन विकसित कर रहा हूं। इस एप्लिकेशन में, UIViewController (vc1) एक और UIViewController (vc2) प्रस्तुत करता है। वीसी 1 पोर्ट्रेट और लैंडस्केप दोनों ओरिएंटेशन का समर्थन करता है; वीसी 2 केवल पोर्ट्रेट अभिविन्यास का समर्थन करता है। shouldAutorotateToInterfaceOrientation:UIViewController डिवाइस रोटेशन प्रतिनिधि विधियों को आईओएस 5

  1. जब vc2 प्रस्तुत किया जाता है, यह VC1 पूछता है और इस रिटर्न हाँ 2.In iOS5 (बीटा 7) willRotateToInterfaceOrientation :, didRotateFromInterfaceOrientation: इस क्रम का आह्वान नहीं किया जा रहा है। लेकिन, यह आईओएस 4 में ठीक काम करता है। क्या यह आईओएस 5 में एक बग है?

धन्यवाद और सादर, दीपा

+0

आईओएस 5 अभी भी एनडीए –

उत्तर

8

मैं एप्पल के लिए एक बग की सूचना दी थी और मैं निम्नलिखित जबाब मिला:

"इंजीनियरिंग निर्धारित किया है कि इस मुद्दे के रूप में निम्न जानकारी पर आधारित इरादा बर्ताव करता है:

प्रेजेंटेशन व्यवहार सही है - अगर यह पिछले संस्करणों में अलग-अलग व्यवहार करता है, तो यह एक बग था। व्यवहार में तर्कसंगत अप्रत्याशित परिवर्तन वीसी 1 की बर्खास्तगी के संबंध में है जो अब घूर्णन कॉलबैक नहीं लेता है लेकिन यह बंदरगाह में लेआउट होगा भिगना।

यह देखने के अन्य तरीके हैं कि आपका अभिविन्यास क्या होता है जब व्यू कंट्रोलर स्वयं को बाहर करता है। विभिन्न कारणों से, रोटेशन कॉलबैक पर भरोसा समस्याग्रस्त साबित हुआ।

सामान्य तौर पर, ViewController रोटेशन कॉलबैक दो मामलों में होते हैं: खिड़की पदानुक्रम

  • मिश्रित इंटरफ़ेस उन्मुखीकरण प्रस्तुतियों में दृश्य नियंत्रकों के लिए

    1. डिवाइस अभिविन्यास बदल जाता है। (नीचे नियंत्रक केवल पोर्ट्रेट का समर्थन करता है, डिवाइस परिदृश्य में है, और एक दृश्य नियंत्रक जो परिदृश्य का समर्थन करता है प्रस्तुत किया जाता है।) हालांकि यह तर्कसंगत रूप से एक गलत है।

    का उपयोग करके देखें viewWillLayoutSubviews: आईओएस 5. "में

  • +0

    के तहत है इस मुद्दे को आपने कैसे ठीक किया? मुझे आईओएस 8 बीटा 5 में एक ही समस्या है। –

    4

    मैं ने वही समस्या जब iOS5 पर अपने ऐप का परीक्षण सामना करना पड़ा था इस्तेमाल किया मुख्य दृश्य नियंत्रक में subviews के लेआउट में गड़बड़ करने के लिए करता है, तो उन्मुखीकरण बदल दिया है। जब एक मॉडल दृश्य नियंत्रक सक्रिय था।

    क्या मैंने किया था मुख्य नियंत्रक में वर्तमान अभिविन्यास झंडा स्टोर करने के लिए किया गया था। यह झंडा मुख्य नियंत्रक में दो स्थानों पर अद्यतन किया जाता है

    1. willAnimateRotationT oInterfaceOrientation:
    2. viewWillLayoutSubviews (यह केवल iOS5 पर है)

    मैं संग्रहीत मूल्य के साथ वर्तमान उन्मुखीकरण की तुलना द्वारा subviews समायोजित करने के लिए सभी तर्क लिखें। यदि वे अलग हैं - संग्रहीत अभिविन्यास को अपडेट करें, अपने सबव्यूज़ अपडेट करें।

    - (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 
        } 
    } 
    
    संबंधित मुद्दे