내 응용 프로그램이 가로 모드입니다. 현재 모델보기를 통해 MFMailComposeViewController를 호출하면 가로 모드로 표시됩니다. 장치 및 MFMailComposeViewController보기가 세로 모드로 변경됩니다.이 회전을 항상 가로 방향으로 제한하고 싶습니다. 모드를 수행 할 수있는 방법이 있습니까?landscape 내 MFMailComposeViewController
답변
새 컨트롤러를 만들고 MFMailComposeViewController에서 상속하십시오.이 컨트롤러에서는 한 가지 기능 만 작성하면됩니다. this.Now의 인스턴스를 생성하면 잘 작동합니다.
서브 클래스 MFMailComposeViewController 클래스, 당신이 그것을 표시하기 위해 shouldAutorotateToInterfaceOrientation를 오버라이드 (override) 할 수 있도록 그러나 당신이 좋아 : 이것은 나를 위해 일한
MailCompose *controller = [[MailCompose alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"In app email..."];
[controller setMessageBody:@"...email body." isHTML:NO];
[self presentModalViewController:controller animated:YES];
[controller release];
:
@interface MailCompose : MFMailComposeViewController {
}
@end
@implementation MailCompose
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
@end
는 MFMailComposeViewController 대신에 새로운 클래스를 지정 , 하나의 사소한 변경으로 완벽하게 :
MailCompose *controller = [[MailCompose alloc]
initWithRootViewController:self.navigationController];
...
그리고 기본 클래스 initWithRootViewController
을 호출해야한다고 확신했습니다. 그렇지 않으면 MFMailComposeViewController가 어떻게 알 수 있습니까? 그러나 위의 예 에서처럼 단순히 [[MailCompose alloc] init]
을 호출하는 것으로 충분합니다. 기본 MFMailComposeViewController는 "자신을 표시하는 방법을"알고 있습니다.
나는 이런 기쁜 소식을 사랑합니다. 다른 사람에게 똑같이 비추어 줄 경우를 대비하여이 글을 올렸습니다.
MFMailComposeViewController의 간단한 카테고리도 작동하는 것으로 나타났습니다. 내 응용 프로그램은 어떤 각도로 회전을 좋아하기 때문에, 나는 MFMailComposeViewController + Rotate.h에 연결 & 생성 :
#import <Foundation/Foundation.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface MFMailComposeViewController (Rotate)
@end
및 MFMailComposeViewController + Rotate.m 내베이스 라인 테스트 목적
#import "MFMailComposeViewController+Rotate.h"
@implementation MFMailComposeViewController (Rotate)
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
// return the desired orientation mask from http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html
return /*mask*/;
}
@end
(아이폰 OS 3.1.3), 루트 뷰 컨트롤러에 넣을 필요가없는 것 같습니다.
내 응용 프로그램이 MFMailComposeViewController를로드 한 후에이 작업을 수행하기 전에 MFMailComposeViewController가 해제 된 후에도 다른 방향으로 회전하지 않게됩니다. 이제 내 앱은 자유롭게 회전 할 수 있습니다.
- 헨리