我在停止应用程序委托中的函数的活动指示器时遇到问题,我知道该函数正在被调用,但我的日志中没有收到任何错误。
我正在我的SignInviewControl中创建activityIndicator,就像这样
@IBAction func googleSignInButton(_ sender: Any) {
GIDSignIn.sharedInstance().uiDelegate = self
GIDSignIn.sharedInstance().signIn()
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.white
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.shared.beginIgnoringInteractionEvents()
}
在我的应用程序委托中完成此操作后,我将拥有此功能,
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
print("this function is running")
SignInViewController().stopanimating()
// ...
if error != nil {
// ...
return
}
我知道这个函数运行得很好,因为它打印日志ect中的文本。并从signInviewControl调用此函数
func stopanimating() {
print("stop animating function running")
DispatchQueue.main.async {
self.activityIndicator.stopAnimating()
UIApplication.shared.endIgnoringInteractionEvents()
}
}
现在我知道这个函数正在运行,因为它还打印日志中的预期文本,并且endIgnoringInteractionEvents确实工作,但是活动指示器仍在运行
我对swift很陌生,但我以前在appdelegate中处理viewcontrollers中的对象时遇到问题,这可能吗?
提前谢谢
最佳答案
当你这样做时:
SignInViewController().stopanimating()
你要做的是创建一个新的signInviewControl并调用它的方法。你想做的就是让现有的动画停止。
一种方法是:
let vc = (GIDSignIn.sharedInstance().uiDelegate as! SignInViewController)
vc.stopanimating()
你可能想稍后重构它,但这会让你走上正确的道路!
关于ios - 来自应用程序委托(delegate)的stopAnimating事件指示器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46263624/