编辑 2020-06-16:
苹果最近修复了这个问题。现在AuthorizationAppleIDButtonButton
可以触发UIControl.Event.touchUpInside
.
UIControl.Event.primaryActionTriggered
虽然,与UIButton 不同,它不绑定.touchUpInside
原答案:
如果您在Apple 的示例应用程序中替换touchUpInside
for登录 (Juice),它也不起作用,所以我猜按钮本身存在问题。primaryAction
除了这种解决方法,我没有找到其他解决方案。该操作将被触发,primaryActionTriggered
并且登录按钮将正常显示高亮动画。
@available(iOS 13.0, *)
class SignInWithAppleButton: UIButton {
private var action: (() -> Void)?
private let authorizationAppleIDButtonButton = ASAuthorizationAppleIDButton()
override var isHighlighted: Bool {
didSet {
super.isHighlighted = isHighlighted
authorizationAppleIDButtonButton.isHighlighted = isHighlighted
}
}
class func make(action: @escaping (() -> Void)) -> SignInWithAppleButton {
let button = SignInWithAppleButton(type: .custom)
button.setup()
button.action = action
return button
}
private func setup() {
addSubviewToFill(authorizationAppleIDButtonButton)
addTarget(self, action: #selector(triggerAction), for: .primaryActionTriggered)
authorizationAppleIDButtonButton.isUserInteractionEnabled = false
}
@objc private func triggerAction() {
action?()
}
}