web-dev-qa-db-ja.com

ASAuthorizationAppleIDButtonがtouchUpInsideイベントに応答しない

私は最新のXcode 11.0で奇妙なバグを経験しました私のコード:

let button = ASAuthorizationAppleIDButton(type: .default, style: .black)
button.translatesAutoresizingMaskIntoConstraints = false
button.cornerRadius = 10
button.addTarget(self, action: #selector(appleSignInButtonSelected(_:)), for: .touchUpInside)

セレクターは呼び出されませんでしたが、イベントをtouchDownに変更すると、すべてが機能します。

10
tereks

同じ問題が発生しました。私の場合、ビューコントローラのメインビューにUITapGestureRecognizerをアタッチしました。ジェスチャ認識機能のプロパティcancelsTouchesInViewをfalseに設定すると役立ちました。

7
Slavo

Appleバグです。touchUpInsideではなくtouchDownを使用してください。

6
erdikanik

親にレイアウトの問題がある場合、ASAuthorizationAppleIDButtonがタップジェスチャをまったく受け取らなかった(downまたはupInside)ことがわかりました。

私の場合、親ビューの1つで制約を省略していたため、ASAuthorizationAppleIDButtonが親ビューのフレームの外側にありました。

これはストーリーボードにあったので、赤い矢印と警告がありましたが、最初は見逃していました。これは、ビューの階層をデバッグし、ツリーの上位にある各祖先ビューの位置に注目することでわかりました。

修正は、祖先のフレーム内にASAuthorizationAppleIDButtonを維持するための制約があることを確認することです。

0
Robin Daugherty