我有一个UIButton
,其中突出显示状态涉及去除阴影。我尝试做的是在按钮上放置UILongPressGestureRecognizer
:
let gesture = UILongPressGestureRecognizer(target: self, action: #selector(self.removeShadow))
gesture.numberOfTapsRequired = 1
gesture.numberOfTouchesRequired = 1
gesture.delaysTouchesBegan = false
gesture.delaysTouchesEnded = false
gesture.minimumPressDuration = 0.01
self.addGestureRecognizer(gesture)
然后在动作中,我使用状态来隐藏和显示阴影:
@objc func removeShadow(gesture: UILongPressGestureRecognizer) {
if gesture.state == .recognized {
UIView.animate(withDuration: 0.1, animations: {
self.layer.shadowOpacity = 0
})
} else if gesture.state == .ended {
UIView.animate(withDuration: 0.1, animations: {
self.layer.shadowOpacity = 0.15
})
}
}
但是,这似乎没有触发任何东西。阴影一直存在于按钮下方。我在这里想念什么吗?
谢谢。
最佳答案
您的手势识别器已被按钮的选择器覆盖。在您的方案中,最好覆盖按钮并在选择按钮时隐藏其阴影。
class ShadowButton: UIButton {
override var isHighlighted: Bool {
didSet {
UIView.animate(withDuration: 0.1) {
self.layer.shadowOpacity = self.isHighlighted ? 0 : 0.15
}
}
}
}