iOS8 + UIDeviceOrientationDidChangeNotification未被调用

时间:2014-09-30 06:54:07

标签: ios swift nsnotificationcenter uiinterfaceorientation

在我的工作应用程序(iOS 7.0.1)中,调用UIDeviceOrientationDidChangeNotification

现在,当我在iOS 8.0中运行此应用程序时UIDeviceOrientationDidChangeNotification没有被调用。

尝试了很多,但没有运气。

修改-1:

我使用下面的代码来添加方向更改的观察者。适用于iOS 7,完美适用于iOS 8.

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

3 个答案:

答案 0 :(得分:12)

在我的情况下,经过大量搜索后我发现我犯了一个愚蠢的错误,我的设备potrait方向锁已打开。

请在设置中确认设备方向锁定。

这可能有助于某人。

答案 1 :(得分:3)

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

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

>

-(void)didRotateDeviceChangeNotification:(NSNotification *)notification
{
    UIInterfaceOrientation newOrientation =  [UIApplication sharedApplication].statusBarOrientation;
    if ((newOrientation == UIInterfaceOrientationLandscapeLeft || newOrientation == UIInterfaceOrientationLandscapeRight))
    {

    }
}

答案 2 :(得分:1)

斯威夫特3:

将观察者添加到viewDidLoad中的UIDeviceOrientationDidChange

        NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)

选择器方法是这样的:

    func orientationChanged(notification: Notification) {

    }

不要忘记在deinit方法

上添加Remove observer
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)