我有一个应用程序,在用户启动应用程序或从后台重新打开应用程序时,会呈现自己的密码输入界面。当用户从后台重新打开应用程序时,不应该出现真实应用程序的“闪烁”,换句话说,安全屏幕需要在用户重新打开应用程序之前完全加载。
对于大多数屏幕,我已经很好地设置了这个功能。
在某种情况下,用户可以旋转应用程序,从选项卡栏控制器调用到水平视图控制器。在这种情况下,我遇到了一些问题。如果我不弹出旋转的屏幕,则输入屏幕会水平显示,即使用户在纵向重新打开应用程序也是如此。
如果我使用动画来解除它,则锁定屏幕直到应用程序重新启动才开始加载,因此您会看到内容的闪烁。
如果我不使用动画来解除它,则锁定屏幕仍会水平显示。
以下是从
对于大多数屏幕,我已经很好地设置了这个功能。
在某种情况下,用户可以旋转应用程序,从选项卡栏控制器调用到水平视图控制器。在这种情况下,我遇到了一些问题。如果我不弹出旋转的屏幕,则输入屏幕会水平显示,即使用户在纵向重新打开应用程序也是如此。
如果我使用动画来解除它,则锁定屏幕直到应用程序重新启动才开始加载,因此您会看到内容的闪烁。
如果我不使用动画来解除它,则锁定屏幕仍会水平显示。
以下是从
applicationDidEnterBackground
中调用的内容: TabBarController *tbc = (TabBarController*)self.window.rootViewController;
void (^openPasscode)() = ^void() {
KVPasscodeViewController *passcodeController = [[KVPasscodeViewController alloc] init];
passcodeController.delegate = self;
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeController];
// Change animated to YES and the new view isn't loaded until after the app restarts
[self.window.rootViewController presentViewController:passcodeNavigationController animated:NO completion:nil];
};
if (tbc.isShowingLandscapeView) {
[self.window.rootViewController dismissViewControllerAnimated:NO completion:openPasscode];
} else {
openPasscode();
}
applicationWillEnterBackground:
中呈现您的密码屏幕后发出[CATransaction flush]
是否有效? - nielsbot