2010-04-22 17 views
8

पर INTNTERfaceOrientation परिवर्तन को मजबूर करना मैं एक आईफोन एप्लिकेशन प्राप्त करने के साथ स्ट्रिंग कर रहा हूं जिसके लिए नेविगेशन बदलने के लिए एनवी कंट्रोलर स्टैक में केवल हर पुश या पॉप की आवश्यकता होती है।आईआईएनएनटरफेस को मजबूर करना आईफोन

मूल रूप से पहली बार देखने चित्र, दूसरा परिदृश्य तीसरे चित्र फिर से (हाँ मैं जानता हूँ कि इस आदर्श से कम है, लेकिन यह है कि डिजाइन है और मैं इसे लागू करने के लिए मिला है) है।

मैं यहाँ पर विभिन्न सलाह के माध्यम से किया गया है ....
How do I detect a rotation on the iPhone without the device autorotating?
Force portrait orientation on pushing new view to UINavigationViewController
Is there a documented way to set the iPhone orientation?
लेकिन कुल सफलता नहीं मिली।

लिंक किए गए लेखों की मेरी पढ़ने 3.1.2 के खिलाफ लिंक करने के लिए की स्थापना ऊपर संकेत मिलता है कि मेरी पोर्ट्रेट दृश्य

 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)); 
} 
साथ एक दृश्य धक्का अगर फिर तो उस दृश्य परिदृश्य में घुमाया पर प्रदर्शित होना चाहिए लगता है। ऐसा होता है कि यह अपने "टूटे हुए" पोर्ट्रेट फॉर्म में दिखाई देता है, फिर डिवाइस चालू होने पर सही तरीके से घूमता है।

मैं (जो एक उपयुक्त shouldAutoRotate है ...) मेरे चित्र दृश्य पर वापस नियंत्रक पॉप तो डिवाइस पोर्ट्रेट ओरिएंटेशन में लौट आता है जब तक तो उस टूटी लैंडस्केप दृश्य में बनी हुई है।

मैं भी सभी shouldautorotate संदेश निकालते समय, और इसके बजाय दृश्य बदलने से रोटेशन के लिए मजबूर कर की कोशिश की है। इस प्रकार के काम, और मुझे पता चला है कि स्टेटस बार (जो वास्तव में मेरे आवेदन में छिपा हुआ है) [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight; कुंजीपटल वांछित होने पर सही अभिविन्यास के साथ दिखाई देगा।

इस दृष्टिकोण के साथ समस्या यह है स्थिति पट्टी को बदलने कि अजीब और बदसूरत है आप एक स्थिति पट्टी की जरूरत नहीं है जब है - एक छाया प्रत्येक परिवर्तन के साथ पृष्ठ पर दिखाई देती है।

तो। मैं क्या खो रहा हूँ।

1) क्या मुझे यह सोचने में गलत लगता है कि 3.1.2 (या संभवतः पहले) में ऑटोरोटेट टूइंटरफेसऑरिएंटेशन को नियंत्रकों को दबाकर वांछित अभिविन्यास प्रदान करना चाहिए?

2) सही अभिविन्यास में दिखने के लिए कीबोर्ड प्राप्त करने का एक और तरीका है।

3) गैर-दस्तावेजी एपीआई जाने का रास्ता कॉल (कृपया कोई कर रहे हैं)

उत्तर

4

आप [UIViewController shouldAutorotateToInterfaceOrientation:] उपयोग नहीं करना चाहिए एक ओरिएंटेशन परिवर्तन को गति प्रदान करने; सिस्टम रोटेशन की अनुमति होने पर सिस्टम को यह जानने के लिए केवल यही है। यद्यपि अनुमति देने वाले अभिविन्यास को निर्दिष्ट करने के लिए आपको अभी भी इसे अपडेट करना चाहिए।

यदि आप कोई विशेष दृश्य दिखाते समय अभिविन्यास को बदलना चाहते हैं, तो आपको अपने [UIViewController viewWillAppear:] के अंदर [UIApplication setStatusBarOrientation:animated:] को प्रत्येक दृश्य नियंत्रकों के लिए ओवरराइड विधि को कॉल करना चाहिए जो एक विशेष अभिविन्यास को मजबूर करता है। इससे एक बदलाव आएगा जब दृश्य को ढेर पर धकेल दिया जा रहा है और जब इसे बंद कर दिया जा रहा है। सुनिश्चित करें कि आप अपने ओवरराइड विधि में super पर कॉल करें।

यह भी सही जगह, कैसे स्थिति पट्टी प्रदर्शित किया जाता है परिवर्तित करने के लिए है कि अगर कुछ आप कर रहे हैं है।

+0

मुझे यकीन नहीं है कि [यूआईएप्लिकेशंस सेटस्टैटसबारऑरिंटेशन .... और [यूआईएप्लिकेशंस शेयर एप्लिकेशंस] के बीच कोई अंतर है .statusBarOrientation ... मैं परीक्षण करूंगा, अन्यथा मैंने जो किया है, और मैं इससे पीड़ित हूं स्टेटस बार की छाया चारों ओर कताई।परिदृश्य दृश्य में, मैं शुरुआत में परिदृश्य में दृश्य दिखाने के लिए एक परिवर्तन का उपयोग करता हूं। अगर मैं एक लैंडस्केप व्यू को guarantAutorotateToInterfaceOrientation के साथ अनुमति देता हूं, तो क्या यह फिर से चालू नहीं होगा? मैं इसे कैसे ओवरराइड कर सकता हूं? – Andiih

+0

ध्यान दें कि इस विधि को अब आईओएस 9 में बहिष्कृत कर दिया गया है। – fullofsquirrels

संबंधित मुद्दे