我的应用程序的启动页面仅使用以下代码设置为纵向:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait ;
}
当应用程序启动时,会UIAlertView
出现一个用户名和密码输入。显示它的方法是从 调用的viewWillAppear
。
这适用于iOS6 ,但从iOS7 开始,如果我将设备切换到横向,主视图仍然是纵向的,但警报视图和键盘会旋转到横向。另一个奇怪的怪癖是,当我切换回纵向时,只有键盘切换回来(以截断形式),使警报在横向模式下冻结:
谁能告诉我如何防止这种情况?
-编辑-
自动旋转代码在一个单独的类别中调用:
@implementation UINavigationController (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) return NO;
else return YES;
}
@结尾
-编辑2-
我也尝试过创建一个类别,UIAlertView
但它从未被调用:
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-编辑 3-
我不确定这有多相关,但这里是显示警报的代码:
- (void)alertWithMessage:(NSString *)theMessage
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login"
message:theMessage
delegate:self
cancelButtonTitle:@"Login"
otherButtonTitles: nil];
[alert setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput];
UITextField *nameField = [alert textFieldAtIndex:0];
[alert show];
}