应用程序在更改时忽略了我的方向

时间:2016-01-19 08:41:27

标签: ios objective-c uiwebview uiinterfaceorientation

我有问题。我在这里解决了这个问题(https://stackoverflow.com/questions/34870418/app-crashes-if-the-orientation-is-changing-in-uiwebview

但现在我的应用程序忽略了我的orientation。如果我输入了登录数据并且加载了新网站但orientation不一样,那么应用就会忽略新的orientation

dispatch_async(dispatch_get_main_queue(), ^{
    NSNumber *value = [NSNumber alloc];
    NSLog(@"Inside!");
    NSLog(@"Orientation: %@", [self orientNr]);
    if( [[self orientNr] isEqualToNumber:@1] ) value = [NSNumber numberWithInt:UIInterfaceOrientationUnknown];
    else if( [[self orientNr] isEqualToNumber:@2] ) value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
    else if( [[self orientNr] isEqualToNumber:@3] ) value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
});

该应用程序正在此块中,因为我在我的控制台上获得了两个日志。 orientation是正确的,但不会执行。

为什么应用会忽略我的orientation?如果我重新启动应用程序,它总是肖像,虽然它应该是风景。

编辑:

在我的plist.info文件中,我配置了支持接口方向 info.plist http://fs5.directupload.net/images/160119/7g9g3e9x.png

编辑2:

我的代码看起来像 dispatch_async http://fs5.directupload.net/images/160119/jhr84am4.png 3

consoleLog http://fs5.directupload.net/images/160119/5w3mpbyf.png

1 个答案:

答案 0 :(得分:0)

我已经在新项目中测试了您的代码,但它确实有效。 如果您正确配置了“支持的接口方向”条目,请检查您的info.plist:

enter image description here

还有一种强制轮换的替代方法:

#import <objc/message.h>

然后,当你想强制landscapeLeft方向时,请使用:

 ((void (*)(UIDevice *, SEL, int))objc_msgSend)([UIDevice currentDevice],@selector(setOrientation:),UIInterfaceOrientationLandscapeLeft);