Googleサインイン機能をカスタムボタンに追加しようとしています this チュートリアルに従っています。ボタンを選択し、そのクラスをGIDSignInButton
に設定して、次のコードを追加するように指示しています:@IBOutlet weak var signInButton: GIDSignInButton!
。
ただし、クラスをGIDSignInButton
に設定することはできません。入力してEnterキーを押すと、フィールドがクリアされます。
回避策はstoryboard
をテキストモードで開いて直接配置します。 interface builder
に戻ると、正常に表示されます。
UIButtonを作成し、そのアクションメソッドで、Google経由で署名するための次のコードを記述できます。
GIDSignIn.sharedInstance().signIn()
それは私のために働きます、このようにあなたはあなたの要件に従ってUIButtonをカスタマイズすることができ、またグーグルを使用してサインインを実行することができます
これは、GIDSignInButtonがUIButtonではなくUIViewのサブクラスであるためです。ストーリーボード/ nibに通常のUIViewを追加し、代わりにそのクラスをGIDSignInButtonに変更します。
google doc から:
GIDSignInButtonをストーリーボード、XIBファイルに追加するか、プログラムでインスタンス化します。ボタンをストーリーボードまたはXIBファイルに追加するには、Viewを追加し、そのカスタムクラスをGIDSignInButtonに設定します。
オブジェクトライブラリのボタンオブジェクトではなく、ビューオブジェクトにGIDSignInButtonを割り当ててみてください
それは私にとって仕事です。
これで、ボタンをIBOutletにリンクできます
GIDSignInButtonは、UIView
またはUIButton
を使用して設定できます。
GIDSignInButton
をUIButtonとして使用している場合
XML
でボタンを見つけます以下のコードをボタンタグの属性として追加します
customClass="GIDSignInButton"
4. storyboard
を再度Interface Builderとして開くと、ボタンクラスが変更されます
GIDSignInButtonをUIViewとして使用している場合
1. Identity Inspector
にカスタムクラスをGIDSignInButton
としてコピーして貼り付けます。2番目は、私の考えでは正しいアプローチです。
簡単な方法は、ボタンアクションを作成し、それに次の行を貼り付けるだけです。
@IBAction func gSignInAction(_ sender: Any) {
GIDSignIn.sharedInstance()?.signIn()
}
数か月前にも同じ問題がありました
あなたのコードは正しいようです
@IBOutlet weak var signInButton: GIDSignInButton!
しかし、問題は
•フレームワークが適切に追加されていない(左側のナビゲーターでプロジェクト設定に移動し、[ビルドフェーズ]をクリックして、フレームワークとSHIFT + CMD + Kを追加します)
•または、代わりに、@ IBOutletをSwiftファイルに書き込んでから、ボタンをドラッグして割り当てます
•最後のオプションは、xcodeを閉じるか、派生データを削除することです
Xcode自体には多くのバグがあります。それがあなたの問題かどうかはわかりませんが、Xcodeの問題です
お役に立てれば!
UIButtonの代わりにUIViewを使用する場合、ビューにGIDSignInButtonのカスタムクラスを割り当てることができます。そこから、下に示すように、ビューをボタンアウトレットとアクションに接続できます。
@IBOutlet weak var googleLoginButton: GIDSignInButton!
@IBAction func googleLoginButtonPressed(_ sender: Any) {
GIDSignIn.sharedInstance()?.signIn()
}
スイフト-5
Open storyboard as source code.
Locate the button in the xml.
Set customClass="GIDSignInButton" as an attribute for the button tag.
Open storyboard as interface builder.
//MARK:- You will not find this with button XML Forcly Add this (customClass="GIDSignInButton")[![enter image description here][1]][1]