私は最新の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に変更すると、すべてが機能します。
同じ問題が発生しました。私の場合、ビューコントローラのメインビューにUITapGestureRecognizer
をアタッチしました。ジェスチャ認識機能のプロパティcancelsTouchesInView
をfalseに設定すると役立ちました。
Appleバグです。touchUpInsideではなくtouchDownを使用してください。
親にレイアウトの問題がある場合、ASAuthorizationAppleIDButton
がタップジェスチャをまったく受け取らなかった(down
またはupInside
)ことがわかりました。
私の場合、親ビューの1つで制約を省略していたため、ASAuthorizationAppleIDButton
が親ビューのフレームの外側にありました。
これはストーリーボードにあったので、赤い矢印と警告がありましたが、最初は見逃していました。これは、ビューの階層をデバッグし、ツリーの上位にある各祖先ビューの位置に注目することでわかりました。
修正は、祖先のフレーム内にASAuthorizationAppleIDButton
を維持するための制約があることを確認することです。