J'ajoute une nouvelle fenêtre d'interface utilisateur pour afficher le contrôleur de vue du code d'accès lorsque l'application entre au premier plan.
Avant iOS 13 dans AppDelegate, j'avais la propriété var passcodeWindow = UIWindow(frame: UIScreen.main.bounds)
où mon rootViewController
était le contrôleur de vue du code d'accès et dans la méthode applicationWillEnterForeground
je faisais passcodeWindow.makeKeyAndVisible()
pour le placer au sommet.
Maintenant, quand je veux implémenter la fonctionnalité de mot de passe dans iOS 13, il y a un problème avec cette approche. Je l'ai déplacé vers la méthode sceneWillEnterForeground
dans SceneDelegate, mais il semble que je ne puisse pas afficher passcodeWindow
en haut de la fenêtre réelle de cette scène.
Je le fais exactement de la même manière que dans AppDelegate et le passcodeWindow
n'est pas affiché.
La façon dont je le fais dans sceneWillEnterForeground
dans AppDelegate et dans SceneDelegate:
passcodeWindow.rootViewController = passcodeViewController(type: .unlock)
passcodeWindow.makeKeyAndVisible()
Je m'attends à ce que passcodeWindow
s'affiche en haut de la fenêtre actuelle de la scène.
Vous pouvez essayer ceci:
if #available(iOS 13.0, *) {
if let currentWindowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
passcodeWindow.windowScene = currentWindowScene
}
}