2012-09-15 18 views
12

दोनों का समर्थन करना कोई भी आईओएस 6 और आईओएस 5 दोनों का समर्थन करने के लिए पुष्टि कर सकता है, नए आईओएस 6 ऑटोरोटेशन विधियों को जोड़ने का कोई मतलब नहीं है, क्योंकि ऐप्पल डॉक्स का सुझाव है कि यदि आप हैं तो इन विधियों को पूरी तरह से अनदेखा किया जाता है आईओएस 5 विधियों को भी लागू करना?आईओएस 6 और आईओएस 5 ऑटोरोटेशन

विशेष रूप से, मैं तरीकों - (NSUInteger)supportedInterfaceOrientations और - (BOOL) shouldAutorotate के बारे में बात - यह है कि इन पर ध्यान नहीं दिया और संकलक द्वारा संश्लेषित कर रहे हैं यदि आप भी - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

उत्तर

8

यदि आप नए एडीके में अपने ऐप को पैकेज कर रहे हैं तो आपको ऑटोरोटेशन के लिए नया कॉलबैक जोड़ना होगा। हालांकि, इन कॉलबैक केवल तब प्राप्त किए जाएंगे जब आईओएस 6 डिवाइस पर ऐसा ऐप चलाया जाता है। पहले आईओएस संस्करणों पर चल रहे उपकरणों के लिए, पहले कॉलबैक प्राप्त किए जाएंगे। यदि आप नए कॉलबैक को लागू नहीं करते हैं, तो डिफ़ॉल्ट व्यवहार यह है कि आपका ऐप आईपैड पर सभी ओरिएंटेशन ओरिएंट को छोड़कर आईपैड पर सभी अभिविन्यासों पर चलता है।

0

आप एक झंडा कहीं सेट करने के लिए लागू (मैं अपने जानकारी में विश्वास करते हैं। प्लिस्ट) जो इंगित करता है कि आप किस दो का उपयोग करते हैं। यदि आप नए का उपयोग करते हैं, तो आप आईओएस 5 के लिए निर्माण नहीं कर सकते (या कम से कम, यह आईओएस 5 पर काम नहीं करेगा)। यदि आप पुराने का उपयोग करते हैं, तो नए तरीकों को नहीं बुलाया जा रहा है। तो हाँ, आपको बहुत कुछ चुनना है कि आप किस विधि का उपयोग करना चाहते हैं, और यदि आप आईओएस 5 का समर्थन करना चाहते हैं, तो आप नई विधियों का उपयोग नहीं कर सकते हैं।

+0

के लिए आप इस बारे में सुनिश्चित, झंडा के बारे में कर रहे हैं? मुझे आईओएस 6 रिलीज नोट्स में इसका कोई उल्लेख नहीं मिला; वे बस बताते हैं कि पुरानी विधियों को लागू करने पर नई विधियों को नजरअंदाज कर दिया जाता है। – johnbakers

+0

डब्ल्यूडब्ल्यूडीसी सत्र 200 पर एक नज़र डालें, लगभग 26 'वे इस बारे में बात करते हैं। सत्र 236, 23'45 "को भी देखें। सुनिश्चित नहीं है कि यह अभी भी एनडीए के तहत है, इसलिए कृपया सीधे देखें – Olaf

+3

दोनों कॉलबैक नए आईओएस 6 के लिए समर्थित हैं। नए कॉलबैक नए एसडीके के साथ पैक किए गए ऐप्स पर प्राप्त होते हैं और चालू होते हैं आईओएस 6 डिवाइस। अन्य सभी मामलों के लिए, पहले कॉलबैक अच्छी तरह से प्राप्त किए गए हैं। कई मामलों में इसका परीक्षण किया है। –

1
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationMaskAll; 
} 

-(void)viewWillLayoutSubviews 
{ 
if([self interfaceOrientation] == UIInterfaceOrientationPortrait||[self interfaceOrientation] ==UIInterfaceOrientationPortraitUpsideDown) 
    { 
     if (screenBounds.size.height == 568) 
     { 
      //set the frames for 4"(IOS6) screen here 
     } 
     else 

     { 
     ////set the frames for 3.5"(IOS5/IOS6) screen here 
     } 

} 
     else if ([self interfaceOrientation] == UIInterfaceOrientationLandscapeLeft||[self interfaceOrientation] == UIInterfaceOrientationLandscapeRight) 
     { 
     if (screenBounds.size.height == 568) 
     { 
      //set the frames for 4"(IOS6) screen here 
     } 
     else 

     { 
     ////set the frames for 3.5"(IOS5/IOS6) screen here 
     } 


    } 
//it is for IOS5 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    { 
    return YES; 
    } 

- (शून्य) viewWillLayoutSubviews इस विधि iOS5/iOS6 के लिए कॉल करेंगे। यह कोड ios6/ios5/ios6 दोनों के लिए 3.5 "स्क्रीन/4" स्क्रीन iOS6 के साथ उपयोगी है।

+0

साफ़ करने की कोशिश करें "जादू संख्या" समाधान का। – dooleyo

+0

- (UIInterfaceOrientation) पसंदीदा इंटरफेसऑरेंटेशन फॉर प्रस्तुति { वापसी UIInterfaceOrientationMaskAll; } दुर्घटना का कारण बन जाएगा। चूंकि वापसी मूल्य एक ठोस अभिविन्यास होना चाहिए, लेकिन मुखौटा –

1

मुझे लगता है कि सबसे सुरुचिपूर्ण समाधान है:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return ((1 << toInterfaceOrientation) & self.supportedInterfaceOrientations) != 0; 
} 

मैं कुछ याद है?

+2

या केवल 'वापसी ((1 << toInterfaceOrientation) और self.supportedInterfaceOrientations)! = 0; ' – user102008

+0

@danskeel आपका उत्तर मूल प्रश्न के साथ कैसे मदद करता है: समर्थन * दोनों * आईओएस 5 और 6? आईओएस 5 में चलते समय 'समर्थित इंटरफेसऑरिएंटेशंस' का आह्वान करना क्रैश का कारण बनता है क्योंकि यह आईओएस 6 फीचर है। '*** अपरिपक्व अपवाद के कारण ऐप को समाप्त करना 'एनएसआईएनवालिडअर्ग्यूमेंट एक्सेप्शन', कारण: '- [MYMainMenuTableViewController समर्थित इंटरफेसऑरिएंटेशंस]: अज्ञात चयनकर्ता उदाहरण 0x68649f0'' –

+0

पर भेजा गया क्या आपने उल्लेख किए गए दोनों तरीकों को जोड़ा था? मुझे लगता है कि आप अपनी कक्षा 'MYMainMenuTableViewController' में पहली बार जोड़ना भूल गए हैं। यह कोई मुद्दा नहीं हो सकता क्योंकि यह सिर्फ एक विधि है और मैं इसे स्वयं ही कॉल कर सकता हूं। – DanSkeel

8

आईओएस 5 रोटेशन के लिए। अपने वांछित उन्मुखीकरण के लिए चेक और वापसी हाँ

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if ((interfaceOrientation==UIInterfaceOrientationPortrait)||(interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown)) { 
     return YES; 
    } 
    else return NO; 
} 

iOS 6.0 autorotation समर्थन

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationIsPortrait(UIInterfaceOrientationMaskPortrait|| UIInterfaceOrientationMaskPortraitUpsideDown); 

} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationIsPortrait(UIInterfaceOrientationPortrait|| UIInterfaceOrientationPortraitUpsideDown); 

} 
+0

मेरे लिए काम किया, – Aziz

+0

आईओएस 6 कोड पर, 'इंटरफेसऑरिएंटेशंस' समर्थित नहीं होना चाहिए, बस 'UIInterfaceOrientationMaskPortrait' वापस करें? और 'preterOterfaceOrientationForPresentation' को प्राथमिकता नहीं देना चाहिए' UIInterfaceOrientationPortrait' वापस करें? उपर्युक्त आईओएस 6 कोड मेरे लिए सही नहीं लग रहा है। – Rob

+0

@ रोब: मैं केवल सुझावों का सुझाव दे रहा हूं, कृपया अपना खुद का अभिविन्यास वापस करें जो आप चाहते हैं। यदि आप UIInterfaceOrientationPortraitUpsideDown नहीं चाहते हैं तो आप केवल UIInterfaceOrientationPortrait लौट सकते हैं। – NaXir

0

दोनों iOS5 और iOS6 में autorotations हम iOS6 के मामले में कॉल पीठ प्रदान करने की आवश्यकता का समर्थन करने के ....

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(orientationChanged:) 
    name:UIDeviceOrientationDidChangeNotification object:nil]; 

और हम

- (NSUInteger)supportedInterfaceOrientations { 
return UIInterfaceOrientationMaskPortrait; 

} 

-(BOOL)shouldAutoRotate{ 
    return YES; 
    } 
कॉल करने की आवश्यकता

iOS5

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
return ((toInterfaceOrientation == UIInterfaceOrientationPortrait) || (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)); 
} 
+0

मुझे नहीं लगता कि कॉलबैक को हार्डकोड करना आवश्यक है, यदि आप UIKit का उपयोग करते हैं और प्रोजेक्ट सेटिंग्स को सही तरीके से सेटअप करते हैं तो वे आईओएस में स्वचालित होते हैं। – johnbakers

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