Google登录按钮无效

imp*_*7vx 15 ios swift google-signin

我已按照他们的网站完全按照谷歌的说法实施了Google登录.我有一个月前的工作,现在它什么也没做.我试图通过删除cocoapod并将他们的网站发送到T来重做所有内容,但仍然没有发生任何事情.就像没有调用任何委托方法一样,我不确定为什么.任何帮助都会很有意义.谢谢!

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)")
    }
}
Run Code Online (Sandbox Code Playgroud)

查看控制器

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)

}  
Run Code Online (Sandbox Code Playgroud)

编辑

在HOURS之后,大声笑,搞清楚这一点,Google登录按钮工作时1)保持超过2秒,2)向左/向下/向右滑动但不向上我不确定这个原因并且将是愿意接受建议!谢谢!

小智 16

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

tapGesture.cancelsTouchesInView = false
Run Code Online (Sandbox Code Playgroud)


imp*_*7vx 10

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

问题出在谷歌按钮和水龙头我必须解雇键盘.我没有把它放在这里,但它在这里.

let tap = UITapGestureRecognizer(target: self, action: #selector(LoginViewController.dismissKeyboard))
self.view.addGestureRecognizer(tap)

func dismissKeyboard() {
    self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)

由于某些原因,Google的代表们搞砸了这一点.我还没有提出解决方案,因为我刚刚发现问题,但如果其他人有问题,我希望这有帮助!


Rya*_*zzo 6

快速、简单的解决方案:

脚步:

  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)
    }

}
Run Code Online (Sandbox Code Playgroud)


fic*_*fic 5

实施您的UITapGestureRecognizer的委托并处理您在Google登录按钮上点击的案例:

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

斯威夫特3:

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

这解决了我的问题.