2009-07-09 19 views
5

मेरा ऐप परिदृश्य आधारित है। मैं परिदृश्य में MFMailComposeViewController का उपयोग करना चाहता हूं लेकिन इसे अभिविन्यास के बारे में नोटिफ़ाई करने के लिए कुछ भी नहीं मिला। परिदृश्य में, MFMailComposeViewController परिदृश्य में, बाईं ओर से आने वाले मेल कंपोज़ विंडो का केवल शीर्ष भाग प्रदर्शित करता है। असल में यह लैंडस्केप स्क्रीन के आधा भाग शामिल है। क्या मेल लिखने की खिड़की को चित्र के बजाय परिदृश्य में प्रकट करने का कोई तरीका है?लैंडस्केप में MFMailComposeViewController प्रदर्शित करना

--- संपादित करें --- दृश्य जहां मैं मेल लिखें लोड करना चाहते हैं इस तरह लिया गया है:

//from first UIViewController 
[self presentModalViewController:secondView animated:YES]; 

//from secondView (a UIViewController), I load the info view, which is where the mail compose shows 
InfoController *infoController = [[InfoController alloc] initWithNibName:@"Info" bundle:[NSBundle mainBundle]]; 
[self.view addSubview:infoController.view]; 

ऊपर से, मेल लिखें जनक दृश्य तीसरा भरी हुई है । Info.plist में, मैं यह कर:

UIInterfaceOrientation = UIInterfaceOrientationLandscapeRight 

उत्तर

6

यदि आप नेस्टेड UIViewController पर MailViewController प्रस्तुत करते हैं, तो इसे अपने मुख्य UIViewController पर प्रदर्शित करने का प्रयास करें। यह मेरे लिए समस्या तय की। मैंने अपने मुख्य नियंत्रक को मुख्य नियंत्रक को पास कर दिया।

+1

मेरे लिए काम किया! धन्यवाद! मुझे पता चला कि क्यों भी: मुख्य दृश्य नियंत्रक हमारे मामलों में एक हैंडलिंग रोटेशन, और केवल एक जो इसे UIInterfaceRotation बदलता है।मेल संगीतकार खुद को व्यू कंट्रोलर के घूर्णन – tadejsv

+0

@ डिमिटिस के अनुसार प्रस्तुत करता है, क्या आप मुझे नमूना – Ravi

+0

@ रावण भेज देंगे मुझे पता नहीं है कि इसे कहां ढूंढना है और न ही मुझे लगता है कि 5 वर्ष पुराना कोड आईओएस देव में उपयोगी होगा ... I मुझे यकीन है कि तब से चीजें महत्वपूर्ण रूप से बदलनी चाहिए। – Dimitris

0

मैं एक परिदृश्य एप्लिकेशन है, और एक MFMailComposeViewController दिखा ठीक से काम करने लगता है ...

मेरा ऐप चित्र मोड में स्विच करने कभी कभी क्योंकि UIImagePickerController है लैंडस्केप मोड में काम नहीं करता है, तो मैं मेरे विचार में निम्नलिखित कोड का उपयोग फिर से सेट लैंडस्केप मोड अप करने के लिए ...

self.bounds = CGRectMake(0, 0, 480, 320); 
self.center = CGPointMake(160, 240); 
self.transform = CGAffineTransformMakeRotation(M_PI/2); 

MFMailComposeViewController उन मूल्यों को ले सकते हैं और मैं कैसे प्रदर्शित करने के लिए पता होना चाहिए tself।

+0

मैं एक UIViewController में MFMailComposeViewController के प्रतिनिधि उपयोग कर रहा हूँ:

आप कुछ इस तरह की जरूरत है। मुझे self.view.bounds और इतने पर उपयोग करना है। यदि मैंने UIViewController के दृश्य DidLoad में जो सेट किया है, तो वह पोर्ट्रेट लोड करेगा, जो मैं नहीं चाहता हूं। अगर मैं मेल लिखें दृश्य प्रदर्शित होने से ठीक पहले करता हूं, तो मुझे ओपी में समान परिणाम मिलते हैं। – 4thSpace

+0

मेल लिखें दृश्य से पहले आप किस प्रकार का दृश्य दिखा रहे हैं? क्या आपने ओएस को बताया है कि आप लैंडस्केप मोड में हैं, या आप अपना खुद का चित्र कर रहे हैं और इसे सिर्फ किनारे बना रहे हैं? –

+0

देरी के लिए खेद है। मैंने आपके सवालों के जवाब में ओपी संपादित किया है। कृपया एक नज़र डालें। – 4thSpace

7

हम मेल संगीतकार दृश्य नियंत्रक द्वारा ऑटो रोटेशन ओवरराइड करने के लिए एप्लिकेशन प्रतिनिधि वर्ग कार्यान्वयन में निम्नलिखित कोड जोड़ सकते हैं।

@interface MFMailComposeViewController (AutoRotation) 
// to stop auto rotation 
@end 

@implementation MFMailComposeViewController (AutoRotation) 
// stop auto rotation 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // should support all interface orientations. 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 
@end 
+0

अच्छा! यह सही काम करता है (केवल आईओएस 6 में ही चीज है IShouldAutorotate और -supportedInterfaceOrientations विधियों के बजाय- shouldAutorotateToInterfaceOrientation :)। धन्यवाद! – Azpiri

-1

यह एक मेरे लिए काम करता ... भेजने के लिए

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // return (YES); 
    return (interfaceOrientation==UIInterfaceOrientationLandscapeRight); 
} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) 
    { 
     ...... 
    } 
}  
0

कोशिश "presentModalViewController:" अपने अनुप्रयोग विंडो के rootViewController को (AppDelegate में)।

मुझे लगता है कि यह मेरे लिए काम करता है क्योंकि MFMailComposeViewController rootViewController अभिविन्यास को मजबूर नहीं कर सकता है, लेकिन rootViewController के नेविगेशन नियंत्रक द्वारा धक्का दिया गया दृश्य नियंत्रकों के अभिविन्यास को मजबूर कर सकता है।

[((AppDelegate *)[UIApplication sharedApplication]).window.rootViewController presentViewController:mailVC animated:YES]; 
संबंधित मुद्दे