无法锁定和解锁屏幕方向

时间:2015-10-13 17:15:05

标签: ios objective-c ibm-mobilefirst device-orientation

我正在努力修改设备方向。我找到了这个cordova插件https://github.com/gbenvenuti/cordova-plugin-screen-orientation并且它正在使用cordova应用程序,但遗憾的是它无法使用IBM MobileFirst Platform Foundation 7.0(+ Angular,Ionic)。

我在Xcode中解锁了设备方向 - >一般: xcode my project general

我还试图按照https://forums.developer.apple.com/thread/6165对屏幕方向cordova插件做一些小扭曲,但它仍无法正常工作

这是YoikScreenOrientation.h的界面

@interface ForcedViewController : UIViewController

@property (strong, nonatomic) NSString *calledWith;

@end

和YoikScreenOrientation.m

@implementation ForcedViewController

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000
    - (NSUInteger)supportedInterfaceOrientations {
        NSLog(@"lockViewController to ALL Portrait < 9");
        return UIInterfaceOrientationMaskPortrait;

    }
#else
    -(UIInterfaceOrientationMask)supportedInterfaceOrientations{
        NSLog(@"lockViewController to ALL Portrait > 9");
        return UIInterfaceOrientationPortrait;
    }
#endif

@end

我可以在日志中看到它通过supportedInterfaceOrientations方法,但它不会将屏幕方向锁定为纵向。为了锁定或解锁设备方向,我错过了任何配置吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,Cordova插件屏幕方向肯定没有帮助,所以我最后使用这个例子http://swiftiostutorials.com/ios-orientations-landscape-orientation-one-view-controller/来创建我的插件,并且可行,改变方向的关键是这个函数在调用之前调用方向改变了,这样我可以覆盖横向或纵向模式的方向, appdelegate.m

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
    {
        if ([LANSCAPE_MODE isEqualToString:orientationMode]){
            if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
                return UIInterfaceOrientationMaskPortraitUpsideDown;
            else
                return UIInterfaceOrientationMaskPortrait;

        }
        else{
            return UIInterfaceOrientationMaskAll;
        }

    }

如果我尝试使用supportedInterfaceOrientations方法覆盖它会在不支持方向时崩溃,此链接会解释崩溃 https://devforums.apple.com/message/731764#731764