我正在开发一个 iPad 应用程序,如果用户输入密码,用户就可以(在某些情况下)打开应用程序。因此我需要像 LoginViewController 这样的东西。但首先,让我们处理常见的情况,应用程序只需要显示 HomeViewController:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//...
self.controllerHomeView = [[HomeViewController alloc] initWithNibName:@"HomeView" bundle:nil];
self.controllerHomeView.showInitialGuide = isFirstLaunch;
self.window.rootViewController = controllerHomeView;
[self.window makeKeyAndVisible];
//..
}
但是,就像我之前说的,有些用户可能已经定义了密码,如果是这样,我们需要显示一个登录屏幕。这就是我为启用此类功能所做的事情:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
//---
if(isAppPinSecured && !loginIsAlreadyDisplaying) {
LoginBackgroundViewController *controllerLoginBG = [[LoginBackgroundViewController alloc] initWithNibName:@"LoginBackgroundView" bundle:nil];
self.appPinInputBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-Landscape@2x~ipad.png"]];
self.appPinInputBG.frame = CGRectMake(0, 0, 1024, 748);
self.appPinInputBG.userInteractionEnabled = YES;
[controllerLoginBG.view addSubview:self.appPinInputBG];
//present new root = background
self.window.rootViewController = controllerLoginBG;
//...
}
}
我正在做的是,将根视图控制器更改为 LoginViewController ,如果用户输入正确的密码,则从LoginViewController更改回HomeViewController。
到目前为止一切正常,除了方向。如果当前界面方向未知,因为 iPad 例如正放在桌子上,LoginViewController方向是LandscapeRight而不是HomeViewController ( LandscapeLeft ) 中的方向。如果将 iPad 握在手中,它可以正常工作,但否则就不行。
有关如何解决该问题的任何建议?我确实在 plist 文件(横向左)中设置了我的应用程序方向。我确实在 Home- 和 LoginViewController 中都使用 UIInterfaceOrientationIsLandscape(...) 实现了 shouldAutorotate。
提前致谢!