在应用中,当没有互联网连接时,我会显示警报(在根视图控制器上显示)。该应用程序上也有一个Biometric authentication
。因此,每当alertview
顶部出现生物特征页面(生物特征页面也显示在根视图控制器上)并将其从视图中删除时,警报视图约束都会更改,并且不会显示在中间。
步骤1:-
显示错误消息
显示警报代码:-
func showAlert(title:String, message: String, buttons: [UIAlertAction]) {
// create the alert
self.alert.title = title
self.alert.message = message
// add an action (button)
if buttons.count == 0 {
self.alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
} else {
for i in 0...buttons.count-1 {
self.alert.addAction(buttons[i])
}
}
self.viewController.present(alert, animated: true, completion: nil)
}
步骤2:-
退出应用程序并显示生物特征验证视图。
应用代理文件:-
func applicationDidBecomeActive(_ application: UIApplication) {
if self.userToken != "" && self.biometricStatus && !UserAccessTemp.isBiometricActive {
let controller = BiometricCheckViewController.instantiate(fromAppStoryboard: .BiometricCheck)
if let window = self.window, let rootViewController = window.rootViewController {
var currentController = rootViewController
while let presentedController = currentController.presentedViewController {
currentController = presentedController
}
currentController.present(controller, animated: true, completion: nil)
}
}
步骤3:-
关闭生物特征验证视图后,警报视图的对齐方式发生变化
那么在关闭生物特征视图后如何重新设置警报视图的中心?
答案 0 :(得分:0)
只需将makeKeyAndVisible()
放入“生物特征”视图,即可解决问题。感谢Deepika的评论。
func applicationDidBecomeActive(_ application: UIApplication) {
if self.userToken != "" && self.biometricStatus && !UserAccessTemp.isBiometricActive {
let controller = BiometricCheckViewController.instantiate(fromAppStoryboard: .BiometricCheck)
let alertWindow = UIWindow(frame: UIScreen.main.bounds)
alertWindow.rootViewController = UIViewController()
alertWindow.windowLevel = UIWindowLevelAlert + 1;
alertWindow.makeKeyAndVisible()
alertWindow.rootViewController?.present(controller, animated: true, completion: nil)
}
}
答案 1 :(得分:0)
尝试:
func showAlert(title:String, message: String, buttons: [UIAlertAction]) {
// create the alert
self.alert.title = title
self.alert.message = message
// add an action (button)
if buttons.count == 0 {
self.alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
} else {
for i in 0...buttons.count-1 {
self.alert.addAction(buttons[i])
}
}
if var topController = UIApplication.sharedApplication().keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
topController.present(alert, animated: true, completion: nil)
}
}