我的应用程序的启动页面设置为portrait仅用这一点代码:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait ;
}
当应用程序启动时UIAlertView
出现用于输入用户名和密码。
显示它的方法是从调用的viewWillAppear
.
这对于iOS6但是由于iOS7,如果我将设备切换为横向,主视图仍保持纵向,但警报视图和键盘旋转为横向。
另一个奇怪的怪癖是,当我切换回纵向模式时,只有键盘切换回来(以截断的形式),使警报冻结在横向模式下:
谁能告诉我如何防止这种情况?
-EDIT-
自动旋转代码在单独的类别中调用:
@implementation UINavigationController (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
-(BOOL)shouldAutorotate
{
if (UIInterfaceOrientationIsLandscape([[UIDevice currentDevice] orientation])) return NO;
else return YES;
}
@end
-EDIT 2-
我也尝试过创建一个类别UIAlertView
但它从未被称为:
@implementation UIAlertView (Orientation)
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return NO;
}
-EDIT 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];
}
尝试在以下位置执行此操作viewDidAppear:
。我以前见过这样奇怪的行为,因为视图布局尚未完全定义。在viewDidAppear:
,一切都已准备就绪,因此此时应该不会有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)