Googleloginbutton不会执行任何操作

根据他们的网站,我已经按照Google的规定实施了Googlelogin。 我在一个月前就开始工作了,现在它什么都不做。 我试图通过删除cocoapod并按照他们的网站重做一切,但没有任何事情仍然发生。 这就像没有任何委托方法被调用,我不确定为什么。 任何帮助将是欣赏。 谢谢!

import GoogleSignIn import Google func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { //Get Twitter and set Twitter keys for Application Twitter.sharedInstance().startWithConsumerKey("uBedaxDuMDgImGbjun1oYf0ay", consumerSecret: "OaKqBZUesX5CypHCwrTvTZE22jrXIuRsUeZzVaMHej11R5Vh3b") Fabric.with([Twitter.self]) // Initialize sign-in GOOGLE var configureError: NSError? GGLContext.sharedInstance().configureWithError(&configureError) assert(configureError == nil, "Error configuring Google services: \(configureError)") GIDSignIn.sharedInstance().delegate = self return true } func application(application: UIApplication, openURL url: NSURL, options: [String: AnyObject]) -> Bool { return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String, annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) } func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool { var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication!, UIApplicationOpenURLOptionsAnnotationKey: annotation!] return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation) } func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) { print("SIGNING IN") if (error == nil) { let email = user.profile.email print(user.authentication) // ... } else { print("ERROR = \(error.localizedDescription)") } } 

视图控制器

 import GoogleSignIn class LoginViewController: UIViewController, UITextFieldDelegate, CLLocationManagerDelegate, GIDSignInUIDelegate override func viewDidLoad() { //Default setup for View Controller super.viewDidLoad() GIDSignIn.sharedInstance().uiDelegate = self var error:NSError? GGLContext.sharedInstance().configureWithError(&error) if(error != nil) { print(error) } var signInButton = GIDSignInButton(frame: CGRect(x: 0, y: 0, width: 150, height: 400)) view.addSubview(signInButton) } 

编辑

经过HOURS,大声笑,搞清楚这一点,谷歌loginbutton的作品,当它是1)持续下去超过2秒,2)左/右/右擦但不起来我不确定这个原因,将是开放的build议! 谢谢!

我已经想通了,想让其他人知道这个愚蠢的愚蠢的问题!

问题是与谷歌button和水龙头我不得不closures键盘。 我没有把它放在这里,但在这里。

 let tap = UITapGestureRecognizer(target: self, action: #selector(LoginViewController.dismissKeyboard)) self.view.addGestureRecognizer(tap) func dismissKeyboard() { self.view.endEditing(true) } 

谷歌的代表出于某种原因搞砸了。 我还没有提出一个解决scheme,因为我现在刚刚发现了这个问题,但如果有其他人有问题,我希望这有助于!

我有同样的问题,这是一个轻敲手势识别器的问题,绑定到主视图,以消除键盘。 这也意外地捕获了GIDSignInButton内部的触动。 更改此设置有助于:

 tapGesture.cancelsTouchesInView = false 

实现你的UITapGestureRecognizer的委托,处理你在Googleloginbutton上点击的情况:

 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { if touch.view is GIDSignInButton { return false } return true } 

Swift 3:

  func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { if touch.view is GIDSignInButton { return false } return true } 

这解决了我的问题。

快速简单的解决scheme:

脚步:

  1. 扩展到UIGestureRecognizerDelegate
  2. 粘贴在以下方法中
  3. dismissOnTap()添加到您的视图控制器

码:

 class ViewController: UIViewController, UIGestureRecognizerDelegate { override func viewDidLoad() { super.viewDidLoad() // Call dismissOnTap dismissOnTap() } func dismissOnTap() { self.view.isUserInteractionEnabled = true let tap = UITapGestureRecognizer(target: self, action: Selector("dismissKeyboard")) tap.delegate = self tap.cancelsTouchesInView = false self.view.addGestureRecognizer(tap) } func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { if touch.view is GIDSignInButton { return false } return true } func dismissKeyboard() { self.view.endEditing(true) } }