问题描述
我一直遵循directions的要求使Google Sign On在我的iPhone应用程序上正常工作。我正在使用XCode 11.5。我的iOS目标是iOS 12.1。
当您单击放置在视图控制器上的google登录按钮时,会弹出一个小的警告窗口,询问您是否要继续使用Google登录。
问题在于使用模态显示的视图控制器上的Google登录按钮不会发生这种情况。相反,当我单击按钮时什么也没有发生。我看不到任何警报询问我是否要使用Google登录。我的模式表示代码如下:
print("Not logged in found.")
if(loginVC == nil) {
let storyBoard = UIStoryboard(name: "Main",bundle: nil)
loginVC = storyBoard.instantiateViewController(withIdentifier: "LoginVC") as! LoginViewController
loginVC!.sessionTracker = sessionTracker! // some coredata stuff I use
loginVC!.loginReceptionDelegate = logsVC! // view controller underneath this one
loginVC!.modalPresentationStyle = UIModalPresentationStyle.fullScreen
}
dispatchQueue.main.asyncAfter(deadline: .Now() + 0.1) {
self.navC!.present(self.loginVC!,animated: true,completion: nil)
}
如果在视图控制器上的模式控制器下方放置一个Google登录按钮,那么当我单击“登录”按钮时,我会看到警报。
为什么它不能与模态呈现的视图控制器一起使用?
我已验证我可以在模态呈现的视图控制器上方看到用UIAlertController
创建的警报,因此我认为Google pod代码甚至都没有尝试为用户进行登录流程(我的顶视图没有阻碍我自己创建的警报)。
这曾经起作用。大约一年前,我有一个与Google登录框架的4.x版本完全相同的项目,但是我购买了一台新的mac笔记本电脑,当我将项目克隆到新计算机上时,遇到了这个问题。我已经将他们的登录Pod升级到了5.x版本,但这并不能解决问题。
解决方法
将我的问题重复出现,因为我终于在堆栈溢出的其他地方找到了答案。
无论如何,问题在于我的模态呈现视图具有轻击手势识别器,这会干扰对Google按钮的点击。
tapGesture.cancelsTouchesInView = false
解决了。