Система игнорирует вращение iPhone - PullRequest
1 голос
/ 12 июля 2010

Есть ли такая функция, как beginIgnoringInteractionEvents в UIApplication, которая игнорирует вращение вместо касаний? Мне нужно, чтобы мое приложение НЕ вращалось только в MPMovePlayerViewController, который я представляю.

Спасибо

[UPDATE]

Вот мой код -

MPMoviePlayerViewController *mpViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:videoURL]];
[mpViewController shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
[self presentMoviePlayerViewControllerAnimated:mpViewController];
[mpViewController release];

Я заработал, добавив методы shouldAutorotateToInterfaceOrientation: и setStatusBarOrientation:. Работает в симуляторе. Однако, если я поворачиваю iPhone во время воспроизведения видео, строка состояния также поворачивается и остается «застрявшей» в книжной ориентации.

изображение моей проблемы на http://i28.tinypic.com/357mrub.png

[ОБНОВЛЕНИЕ 2]

Подклассифицируя MPMoviePlayerViewController (и реализуя метод shouldAutorotate), программа вращается как следует. Только видео не воспроизводится, потому что линия

[self presentMoviePlayerViewControllerAnimated:mpViewController];

не принимает мой подкласс.

"предупреждение: несовместимые типы Objective-C« struct NoRotate * », ожидаемый« struct MPMoviePlayerViewController * »при передаче аргумента 1« presentMoviePlayerViewControllerAnimated: »из отличного типа Objective-C»

Ответы [ 2 ]

6 голосов
/ 12 июля 2010

В представлении, которое вы представляете, реализуйте метод shouldAutoRotate и просто возвращайте «NO».Это приведет к тому, что телефон будет игнорировать любые изменения ориентации.

0 голосов
/ 12 июля 2010

Может быть, вы могли бы создать подкласс MPMoviePlayerViewController следующим образом

// NotRotatingMoviePlayerViewController.h
@interface NotRotatingMoviePlayerViewController : MPMoviePlayerViewController {
}

@end

// NotRotatingMoviePlayerViewController.m
@implementation

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
  return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

@end
...