系统忽略iPhone旋转

时间:2010-07-12 15:36:09

标签: iphone events rotation ios4 uiapplication

在UIApplication中是否有像beginIgnoringInteractionEvents这样的函数忽略了旋转而不是触摸?我需要我的应用程序不要只在我出现的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 *',在传递'presentMoviePlayerViewControllerAnimated:'的参数1时,预期'struct MPMoviePlayerViewController *'来自不同的Objective-C类型”

2 个答案:

答案 0 :(得分:6)

在您提供的视图中,实现shouldAutoRotate方法并返回“NO”。这将导致手机忽略任何和所有方向更改。

答案 1 :(得分:0)

也许你可以像这样

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

@end

// NotRotatingMoviePlayerViewController.m
@implementation

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

@end