如何锁定UIAlertController的方向?

8
在我的应用程序中,只有一个 UIViewController 在横屏模式下运行,在应用程序内导航时运作良好。但是,当我从该横屏的视图控制器呈现 UIAlertController(用于显示警报视图),并更改设备方向时,它会更改该横屏视图控制器的方向。我尝试了不同的解决方案,例如:

iOS 8.3 上 UIAlertView 崩溃

iOS 8.3 支持的方向崩溃

但是,这些都对我无效。我如何锁定 UIAlertController 的方向? 注意:我的应用程序支持 iOS9
2个回答

2

这里有另一种解决方案,可以在UIAlertController中锁定方向,这样您就可以避免在视图控制器中失去旋转屏幕的能力。

PXCustomUIAlertController.h

#import <UIKit/UIKit.h>

@interface PXCustomUIAlertController : UIAlertController
@end

PXCustomUIAlertController.m

#import "PXCustomUIAlertController.h"

@interface PXCustomUIAlertController ()
@end

@implementation  PXCustomUIAlertController


- (instancetype)init
{
    self = [super init];
    return self;
}


-(UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}

@end

然后你可以导入这个类并像这样使用:

    PXCustomUIAlertController *alertController = [PXCustomUIAlertController
                                                      alertControllerWithTitle:nil
                                                      message:nil
                                                      preferredStyle:UIAlertControllerStyleActionSheet];

...

哇,2021年了,这似乎仍然是最简单的方法... - Fabio Napodano

0
如果您想为整个应用程序锁定方向:如果您正在使用XCode,请展开左侧文件概述。单击App(最高元素),它应该旁边有XCode图标。然后,您可以在设备方向下选择支持的状态。
如果您只想锁定一个视图的方向:
override func shouldAutorotate() -> Bool {
    return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接