2010-09-30 99 views
1

我提出用presentModalViewController在我的UIViewController,在mailController(MFMailComposeViewController的子類)類MFMailComposeViewController(mailController)我有overhide shouldAutorotateToInterfaceOrientation作爲iPad設備定位問題

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

但在我的UIViewController類,我有overhide shouldAutorotateToInterfaceOrientation爲(這是我的項目需要)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    { 
return NO; 
    } 

提出我mailcontroller後,如果我旋轉設備它完美的作品如預期(支持landsca peleft/right orientation)...但是相同的代碼在iPad中不起作用。我在這裏犯了什麼錯誤嗎?這是蘋果的錯誤?

我正在使用此api [myViewController presentModalViewController:mailController animated:YES];

和我在iPhone和iPad讓這個警告視圖控制器<UINavigationController: 0x7720920> returned NO from -shouldAutorotateToInterfaceOrientation: for all interface orientations. It should support at least one orientation.

感謝,

回答

5

你實際上說的是:「我不支持任何方向」,這當然是... 不對。

您應該至少返回一個方向爲true。例如:

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

一旦mailcontroller提出,如果我旋轉設備的mailcontroller不在iPad中旋轉。但我已經使用iPhone的相同代碼,它在iPhone中正常工作。我認爲這是蘋果的錯誤。 – 2010-10-01 11:50:39

+0

如果這是一個錯誤,它是在iPhone上,而不是在iPad上。無論如何,這個方法不應該爲每個方向返回FALSE。 – 2010-10-01 11:55:13

+0

菲利普的答案爲我工作。 – 2011-02-25 21:47:34

0

此方法將允許兩個橫向的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
} 
-2
MFMailComposeViewController *picker=[[MFMailComposeViewController alloc] init]; 
picker.mailComposeDelegate = self; 
[picker setSubject:self.title]; 
[picker setMessageBody:body isHTML:YES]; 
[picker shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft]; 
[picker shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight]; 
[picker shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait]; 
[picker shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortraitUpsideDown]; 
[self presentModalViewController:picker animated:YES]; 

這應該解決這個問題......

+0

它如何以及爲什麼會起作用?你不是「設置」一個方向,這只是反覆調用「shouldAutorotate」方法,我不明白達到了什麼目的。 – 2012-05-21 10:00:40

+0

對不起,但downvote或國旗不回答這個問題。我仍然不明白爲什麼/這將如何工作。如果我是這個白癡,這實際上有效,請告訴我。 – 2012-05-22 07:12:29