当设备在桌面上时,UIDeviceOrientationDidChangeNotification不起作用?

时间:2011-08-04 06:07:06

标签: iphone uidevice

您好我有问题, 在我的AppDelegate中,我使用方法beginGeneratingDeviceOrientationNotifications在设备开始旋转时开始通知我。 它可以正常工作,如果我手持我的ipad,但当它保持在桌子上,它不能按预期工作。 它会触发UIDeviceOrientationUnknown通知。 此UI通知也不会在启动画面上启动时启动此通知。

以下是我的代码:

if([[[PulseUIFactory Factory] GetUICreator] IsIPad])
    {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
    }
     current device stars giving proper values.
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

然后我推出了我的用户界面

[self Launch_UI];

但是,即使在通知之前注册了通知,通知也会在[self Launch_UI];通话后开始响应...

请大家帮忙!

1 个答案:

答案 0 :(得分:0)

当您将设备放在桌面上时,[[UIDevice currentDevice] orientation]将返回UIDeviceOrientationFaceUp。然后,如果您的设备正面朝上放在桌面上,无论您如何在桌面上旋转它,当前的设备方向仍为UIDeviceOrientationFaceUp

如果设备在确定方向时遇到问题,您可能会获得UIDeviceOrientationUnknown。请参阅this教程,了解如何使用UIDeviceOrientationDidChangeNotification处理设备轮换。

关于仅在加载UI后触发的通知,UIDeviceOrientationDidChangeNotification仅在设备旋转时触发。因此,如果您在UI加载之前没有旋转设备,则不会收到通知。如果这不是问题的原因,我必须看到更多的代码,以便更好地了解发生了什么。