8

按照标题。调用 [[UIDevice currentDevice] BeginGeneratingDeviceOrientationNotifications] 无效。

DidRotateToInterfaceOrientation 等事件工作正常,但我需要能够任意轮询设备方向。

我该如何解决/做到这一点?

长话短说:我有一个标签应用程序,每个标签上都有一个导航控制器。第一个选项卡的根视图是当方向变为横向时全屏显示的图形;但是,每当视图出现时都需要检查这一点,因为方向变化可能已经发生在其他地方,所以我希望在这个视图出现时轮询方向状态。

4

5 回答 5

9

UIDevice 的方向概念似乎只在实际设备上可用。无论通知是否已按照文档的建议启用,模拟器似乎总是在这里返回 0。令人讨厌的不方便,但你去。

我发现这在实际设备上运行良好:

    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    NSLog(@"orientation: %d", [[UIDevice currentDevice] orientation]);
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
于 2010-08-14T18:50:21.230 回答
2

如果您签[[UIDevice currentDevice] orientation]入,- (void)viewDidLoad您将永远得到零。

- (void) viewDidAppear:(BOOL)在 * *animated 方法中检查它,你

于 2012-11-12T09:49:31.320 回答
2

似乎是一个愚蠢的问题,但不是吗

beginGeneratingDeviceOrientationNotifications

(小写 b)...

于 2010-08-02T14:49:53.687 回答
1

正如 iMeMyself 在上面的评论中所说的那样——这让我花了很多时间,我认为这是正确的答案,所以我想在这里强调一下:

UIDeviceOrientation interfaceOrientation = [UIApplication sharedApplication].statusBarOrientation;

if (UIInterfaceOrientationIsLandscape(interfaceOrientation))
{
   //do stuff here
}
else if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
//or do stuff here
}
于 2013-08-13T02:29:55.990 回答
0

[[UIDevice currentDevice]orientation] 不会给你当前的方向状态吗?您可以在要轮询的视图控制器的 viewWillAppear 方法中检查这一点。

编辑:除此之外,还有多种方法可以获取当前方向,例如使用 UIApplication 中的 statusBarOrientation 属性或 UIViewcontroller 中的 interfaceOrientation 属性。

于 2010-05-22T00:33:14.240 回答