9

मेरे पास एक ऐप है जो पूरी तरह से रोटेशन का समर्थन करता है। मैं आम तौर पर UIImagePickerController जोड़ रहा हूं जिसके लिए UIInterfaceOrientationLandscape के लिए कोई समर्थन नहीं है और मैं नियंत्रक को पोर्ट्रेट में रहने के लिए नहीं मिल सकता।घूर्णन से एक मोडल UIImagePickerController को कैसे रोकें?

दूसरे शब्दों में, मुझे UIImagePickerController के लिए रोटेशन को अक्षम करने की आवश्यकता है, इसलिए यह मेरे बाकी ऐप के लिए रोटेशन को हटाए बिना पोर्ट्रेट में रहता है। यह मूल लगता है, लेकिन मुझे इसका पता लगाना प्रतीत नहीं होता है। मैं इस घूर्णन को कैसे रोक सकता हूं?



अद्यतन

के रूप में सुझाव दिया, मैं निम्नलिखित कोड के साथ उपवर्गीकरण की कोशिश की:

@interface UAImagePickerController : UIImagePickerController { 
} 
@end 

@implementation UAImagePickerController 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return UIDeviceOrientationIsPortrait(toInterfaceOrientation); 
} 
@end 

लाइन बिल्कुल एक ब्रेकपाइंट के साथ नहीं मारा जा रहा है ... मुझे लगता है कि वहाँ कुछ होना चाहिए UIImagePickerView

+0

रिकॉर्ड के लिए, मैंने अभी देखा है कि मेरे आईफोन ऐप में imagepickerview घूमता है भले ही ऐप परिदृश्य का समर्थन नहीं करता है। तो कैमरा दृश्य के घूर्णन को अक्षम करने के लिए कोई "कानूनी" तरीका नहीं लगता है? एक रडार की तरह लगता है, या कम से कम एक परिवर्तन अनुरोध। – DaGaMs

उत्तर

-2

सबक्लास UIImagePickerController और उस नए वर्ग को लागू करने के लिए shouldAutorotateToInterfaceOrientation: यह केवल चित्र के लिए बारी बारी से करने के लिए, कुछ इस तरह:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 
+0

ने कोशिश की - अभी भी घूमती है और कभी भी ट्रिगर नहीं होती है। – coneybeare

+0

आपके उत्तर में एक परिशिष्ट के रूप में, आपको हमेशा (अब विज्ञापन) 'UIDeviceOrientationIsLandscape' और 'UIDeviceOrientationIsPortrait' मैक्रोज़ का उपयोग करना चाहिए। उदाहरण के लिए, आईपैड ऐप्स जो कम से कम 2 ओरिएंटेशन का समर्थन नहीं करते हैं (यानी, पोर्ट्रेट अप और पोर्ट्रेट डाउन या लैंडस्केप बाएं और लैंडस्केप दाएं) को खारिज कर दिया जाएगा। ये मैक्रोज़ या तो परिदृश्य अभिविन्यास या या तो पोर्ट्रेट अभिविन्यास पर 'YES' लौटाते हैं, जिसका उपयोग आप करते हैं। – jer

+0

@jer मैंने एक आईपैड ऐप सबमिट किया है जो केवल 1 अभिविन्यास का समर्थन करता है और इसे अस्वीकार नहीं किया गया था, इसलिए मुझे यकीन नहीं है कि आप कहां आकर्षित कर रहे हैं। कोड के लिए ही, जब आप एक नया व्यू कंट्रोलर क्लास बनाते हैं तो एक्सकोड स्वत: उत्पन्न होता है, इसलिए यदि आप निश्चित हैं कि यह अस्वीकृति के लिए प्रवण है, तो आपको ऐप्पल के साथ एक बग फाइल करना चाहिए। –

-4

आप _isSupportedInterfaceOrientation :, ओवरराइड और नहीं shouldAutorotateToInterfaceOrientation चाहिए:

iPad 2 UIImagePickerController camera auto-rotation driving me mad!

+0

यह एक निजी विधि है और ऐप्पल द्वारा असमर्थित है। यह एक अनुशंसित समाधान नहीं है और आपको इसका उपयोग करने के लिए शायद खारिज कर दिया जाएगा। – coneybeare

+0

धन्यवाद टोपी !!! लेकिन यह काम है। इसे अस्वीकार कर दिया जाएगा या नहीं, आपके कार्यान्वयन पर निर्भर करता है। किसी को भी भ्रमित करने का कोई तरीका है जो इसे जांचेगा;) – Dmitry

-4

बस अपने ViewControllers @implementation ब्लॉक ऊपर में यह ड्रॉप (.m फ़ाइल में)

@implementation UIImagePickerController (portrait) 

- (BOOL)_isSupportedInterfaceOrientation:(UIDeviceOrientation)orientation 
{ 
    return UIDeviceOrientationIsPortrait(orientation); 
} 

@end 
+1

निजी विधियां ऐप्पल डेवलपर समझौते का उल्लंघन करती हैं, खतरनाक हैं और उन्हें किसी भी उत्पादन वातावरण में नहीं रखा जाना चाहिए। – coneybeare

-1

मैंने अपना UIImageP बनाया एक UIViewController अंदर ickerController साथ संबंधित shouldAutorotateToInterfaceOrientation पद्धति लागू है और इस

[self.view addSubview:myImagePicker.view]; 
[targetVC.navigationController presentModalViewController:self animated:YES]; 

आशा है कि मदद करता है जैसे कि यह प्रस्तुत किया।

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