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的代表们搞砸了这一点.我还没有提出解决方案,因为我刚刚发现问题,但如果其他人有问题,我希望这有帮助!
快速、简单的解决方案:
脚步:
UIGestureRecognizerDelegatedismissOnTap()到您的视图控制器代码:
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)
实施您的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)
这解决了我的问题.