UIDevice的beginGeneratingDeviceOrientationNotifications不能正常工作

时间:2013-06-25 22:35:21

标签: objective-c cocoa-touch orientation

我在UIView的子类中有一个子视图。旋转设备时,我希望删除子视图。这是我的代码:

- (void)awakeFromNib
{
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];

}

- (void)orientationChanged
{
    [subview removeFromSuperview];
}

我的问题是,即使设备稍微倾斜,或者换上例如桌子,子视图也会移除。我该怎么做才能防止这种情况发生?

1 个答案:

答案 0 :(得分:6)

请勿跟踪设备方向。跟踪界面方向。使用UIApplicationWillChangeStatusBarOrientationNotification代替UIDeviceOrientationDidChangeNotification,并从通知userInfo中获取新的界面方向。 (如果跟踪界面方向,则不必执行beginGeneratingDeviceOrientationNotifications。)