2016-06-10 79 views
7

我已經按照谷歌的狀態按照他們的網站實施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)") 
    } 
} 

視圖控制器

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) 

} 

編輯

小時後,洛爾,搞清楚了這一點後,谷歌登錄按鈕的作品,當它被按下更 1) 2秒鐘, 2)左/右/右而不是上移 我不確定這個原因,並會對建議開放!謝謝!

+0

請張貼一些代碼 –

+0

你去那裏。感謝您的期待 – impression7vx

回答

9

我已經想通了,想讓別人知道這個愚蠢的愚蠢問題!

問題是與谷歌按鈕和水龍頭我不得不關閉鍵盤。 我沒有把它放在這裏,但它在這裏。

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

func dismissKeyboard() { 
    self.view.endEditing(true) 
} 

Google的代表出於某種原因搞砸了。我還沒有提出解決方案,因爲我剛剛發現問題,但如果有其他人遇到問題,我希望這有助於解決問題。

+0

嘿,我不完全確定你的意思。我想我遇到了同樣的問題。我得到它的工作,然後突然停止工作。 當我刪除「GIDSignIn.sharedInstance()。uiDelegate = self」這行代碼它打破了,當我彈出它時,我沒有得到任何錯誤,但沒有任何反應。 – tryingtolearn

+0

嗯,我的問題是:我有一個谷歌登錄按鈕,最重要的是,我爲整個視圖添加了一個輕擊手勢。所以它會註冊點按手勢而不是谷歌按鈕。因此,如果我在Google按鈕上按住更長時間,那麼水龍頭不會註冊,但Google按鈕會。所以我必須找到一種方法來在屏幕上註冊一個水龍頭(這可以讓鍵盤隱藏,如果它在那裏)並使用GID按鈕。 – impression7vx

3

實現你UITapGestureRecognizer的委託和處理您在按鈕上的谷歌標誌竊聽的情況:

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

斯威夫特3:

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

這解決了這個問題對我來說。

+1

@EricD,我更新了我的答案,謝謝指出。 – fic

7

我有同樣的問題,這是一個問題,與點擊手勢識別器綁定到主視圖,以關閉鍵盤。它意外地捕獲了GIDSignInButton內部的觸動。更改此設置幫助:

tapGesture.cancelsTouchesInView = false 
+0

這是訣竅!你真的救了我。 即使在17個月後,最好的答案 –

2

快速,簡單的解決方案:

步驟:

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

}