2011-05-16 8 views
20

[[UIDevice currentDevice] orientation] विधि चित्र और परिदृश्य अभिविन्यास से परे कई ओरिएंटेशन देता है। मुझे यह देखने के लिए अच्छी तरह से पता है कि क्या अभिविन्यास लौटाया गया है "मान्य" है, दुर्भाग्यवश अगर अभिविन्यास लौटाया गया है तो "वैध" नहीं है जब मेरे ऐप को निर्धारित करने के लिए एक विशिष्ट अभिविन्यास की आवश्यकता होती है, मुझे यह जानने का कोई तरीका नहीं है कि कौन सी विधि है उचित।डिवाइस के अभिविन्यास के बजाय स्क्रीन के अभिविन्यास को निर्धारित करना

मैं इस के लिए समाधान के एक नंबर का प्रयास किया है, लेकिन अब केवल एक चीज के लिए मैं बाहर काम करने के अगर उन्मुखीकरण LandscapeLeft या LandscapeRight है देखने के लिए जाँच करने के लिए है सक्षम किया गया है और मुझे लगता है अगर यह नहीं है स्क्रीन है चित्र अभिविन्यास में। दुर्भाग्यवश यह तब सही नहीं है जब डिवाइस का सामना हो रहा है और स्क्रीन लैंडस्केप ओरिएंटेशन में है।

parentController.interfaceOrientation; 

दुर्भाग्य से यह UIDeviceOrientationUnknown लौटे:

मैं जनक दृश्य नियंत्रक के उन्मुखीकरण का उपयोग करने का प्रयास किया। मैं किसी और के लिए एसओ और Google खोजता हूं जिसने इस समस्या का सामना किया है। मुझे लगता है कि ऐप्पल के पास उनके उन्मुखता के लिए LandscapeLeft/Right और PortraitUp/Down पर कुछ भी मूर्खतापूर्ण प्रतीत होता है।

मुझे वास्तव में क्या चाहिए एपीपीएस अभिविन्यास डिवाइस नहीं है, क्योंकि ये कभी-कभी बाधाओं में होते हैं। कोई सलाह?

उत्तर

49

क्या आपने UIInterfaceOrientationPortrait/UIInterfaceOrientationLandscape का उपयोग करने का प्रयास किया है?

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) { 
    //do portrait work 
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){ 
    //do landscape work 
} 

तुम भी UIDeviceOrientationIsValidInterfaceOrientation कोशिश कर सकते हैं: मैं आमतौर पर इन विधियों का उपयोग बहुत अच्छे परिणाम है।

ये केवल ऐप के अभिविन्यास को वापस कर देगा, जो डिवाइस के अभिविन्यास के समान नहीं हो सकता है।

तो उन से काम नहीं करते हैं, आप भी कोशिश कर सकते हैं:

[[UIApplication sharedApplication] statusBarOrientation]