मैंने हाल ही में आईफोन ऐप से आईपैड पर कुछ कोड पोर्ट करते समय एक समस्या में भाग लिया है। यह here वर्णित मुद्दे से संबंधित हो सकता है, हालांकि मुझे उस प्रश्न के स्पष्टीकरण/समाधान असंतोषजनक पाया गया।आईपैड पर एकाधिक प्रस्तुत दृश्य नियंत्रक और रोटेशन
देखें नियंत्रक 'ए' (रूट देखें नियंत्रक) एक मॉडल दृश्य नियंत्रक "प्रपत्र शीट" मोडल प्रस्तुति शैली के साथ (यह 'बी' कहते हैं) प्रस्तुत करता है: परिदृश्य यह है।
नियंत्रक देखें बी "पूर्ण स्क्रीन" मोडल प्रस्तुति शैली के साथ नियंत्रक 'सी' देखें।
आईपैड घुमाया गया है जबकि नियंत्रक सी शीर्ष-प्रस्तुत प्रस्तुत नियंत्रक है।
सी, बी को बर्खास्त करने पर फिर से प्रदर्शित किया गया है, लेकिन गलत अभिविन्यास है।
जहां तक मेरा बता सकते हैं, एक से अधिक प्रस्तुत दृश्य नियंत्रकों की श्रंखला के साथ कोई समस्या नहीं होनी चाहिए - वास्तव में, इस व्यवहार को स्पष्ट रूप से Presenting View Controllers from Other View Controllers दस्तावेज में समर्थित है। मैं भी iOS 5 Release Notes में निम्नलिखित बयान पढ़ा है:
iOS 5 मेंरोटेशन कॉलबैक नियंत्रकों है कि एक पूर्ण स्क्रीन पर प्रस्तुत कर रहे हैं देखने के लिए लागू नहीं कर रहे हैं। इसका अर्थ यह है कि यदि आपका कोड किसी अन्य व्यू कंट्रोलर पर व्यू कंट्रोलर प्रस्तुत करता है, और उसके बाद उपयोगकर्ता डिवाइस को अलग-अलग ओरिएंटेशन पर घुमाता है, तो बर्खास्तगी पर, अंतर्निहित नियंत्रक (यानी नियंत्रक प्रस्तुत करने) को कोई रोटेशन कॉलबैक नहीं मिलेगा। ध्यान दें कि प्रस्तुत करने वाले नियंत्रक को एक दृश्य प्राप्त होगा, जब इसे फिर से चलाया जाता है, और इंटरफ़ेसऑरिएंटेशन प्रॉपर्टी को इस विधि से पूछताछ की जा सकती है और नियंत्रक को सही ढंग से बाहर निकालने के लिए उपयोग किया जाता है।
जहां तक मेरा बता सकते हैं, यह नहीं होती है - दृश्य नियंत्रक बी -shouldAutoRotateToInterfaceOrientation के लिए एक कॉल प्राप्त करता है लेकिन मूल्य इस कॉल में interfaceOrientation पैरामीटर दृश्य नियंत्रक बी के इंटरफ़ेस उन्मुखीकरण के मूल्य जब यह दृश्य प्रस्तुत है नियंत्रक सी, बर्खास्तगी पर सी के इंटरफेस अभिविन्यास के मूल्य नहीं। चूंकि हम एक आईपैड पर हैं, इसलिए ये सभी व्यू कंट्रोलर YES में -ShouldAutoRotateToInterfaceOrientation में वापस आते हैं। इस प्रकार बी के विचार की सीमाएं कभी भी नहीं बदली जाती हैं, इसलिए -विल्लआउटआउट्स कभी नहीं बुलाया जाता है।
मैं एक कॉलबैक में दृश्य नियंत्रक सी के उन्मुखीकरण बचत बी को पहले बी यह खारिज करते हुए और फिर उस जानकारी अगली बार -shouldAutoRotateToInterfaceOrientation कहा जाता है का उपयोग कर और केवल सी के उन्मुखीकरण के लिए हाँ लौटने जब यह खारिज किया जाता है की कोशिश की है। यह ठीक करता है, टूटा हुआ यूआई जो इस चेक के बिना दिखाई देता है, लेकिन नियंत्रक बी को इस मान पर अपने इंटरफ़ेस अभिविन्यास को अपडेट नहीं करता है, इसलिए बाद के मोडल प्रस्तुतियां डिवाइस के गलत पक्ष से/बाहर एनिमेट हो जाएंगी।
क्या कोई इस काम की तरह एक दृश्य नियंत्रक कॉन्फ़िगरेशन सफलतापूर्वक प्राप्त करने में सक्षम है? यह एक परिदृश्य के असामान्य की तरह प्रतीत नहीं होता है, इसलिए मैं थोड़ा आश्चर्यचकित हूं कि यह काम नहीं कर रहा है क्योंकि मैंने शुरुआत में इसकी अपेक्षा की थी।
अग्रिम धन्यवाद।
मैं मानता हूं कि यह एक नेविगेशन नियंत्रक को मोडल की जड़ के रूप में उपयोग करने में कम भ्रमित होगा। हालांकि, जिस डिज़ाइन को मैं मिलान करने का प्रयास कर रहा हूं, उसे देखने के लिए फॉर्म-शीट शैली की आवश्यकता है और व्यू कंट्रोलर सी के लिए एक पूर्ण स्क्रीन प्रस्तुति की आवश्यकता है। यह वांछित परिणाम प्राप्त करने के लिए कम से कम प्रतिरोध के मार्ग की तरह लग रहा था, लेकिन दुर्भाग्य से ऐसा लगता है कुछ गैर-स्पष्ट मुद्दे। मुझे वास्तव में यकीन नहीं है कि आईफोन पर यह वही समस्या मौजूद है - आप यह मानने में सही हैं कि फोन पर रोटेशन अक्षम है। – jamie