我在UIView的子类中有一个子视图。旋转设备时,我希望删除子视图。这是我的代码:
- (void)awakeFromNib
{
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];
}
- (void)orientationChanged
{
[subview removeFromSuperview];
}
我的问题是,即使设备稍微倾斜,或者换上例如桌子,子视图也会移除。我该怎么做才能防止这种情况发生?
答案 0 :(得分:6)
请勿跟踪设备方向。跟踪界面方向。使用UIApplicationWillChangeStatusBarOrientationNotification
代替UIDeviceOrientationDidChangeNotification
,并从通知userInfo
中获取新的界面方向。 (如果跟踪界面方向,则不必执行beginGeneratingDeviceOrientationNotifications
。)