2011-01-18 2 views
2

Я использую MFMailComposeViewController для электронной почты приложения, и он отлично работает в режиме Portrait. Но когда мое приложение поддерживает обе ориентации в ландшафтном режиме, используя [self presentModalViewController: mailVC animated: YES];MFMailComposeViewController создает ориентацию портретной ориентации на iPad

заставляет мое приложение в портретном режиме, которого я не хочу.

Я пробовал много вещей от переопределения MFMailComposeViewController shouldAutorotateToInterfaceOrientation: методы, откладывающие первый ответчик и т. Д. Без особого успеха.

Как я могу заставить MFMailComposeViewController работать в Landscape на iPad?

ответ

1

Попробуйте отменяя функцию автоповорота:

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

В качестве альтернативы настоящего времени MFMailComposeViewController от UIViewController, который управляет вращением в вашем приложении.

2

У меня была такая же проблема, и я попытался переопределить, это не помогло мне.

Попробуйте отправить «presentModalViewController:» в rootViewController вашего окна приложения (в AppDelegate).

Я думаю, что это работает для меня, потому что MFMailComposeViewController не может принудительно настроить ориентацию rootViewController, но может форсировать ориентацию viewControllers, которая была нажата навигационным контроллером rootViewController.

Вам нужно что-то вроде этого:

[((AppDelegate *)[UIApplication sharedApplication]).window.rootViewController presentViewController:mailVC animated:YES completion:nil];