普通にこのカスタマイズを使ったらタップでもボタンの背景色が変わります
class CustomButton: UIButton {
open override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .buttonActive : .buttonDefault
}
}
}
こういうView配置になると、長押す時だけ反応します。
- UIScrollVIew
- UIButton
原因はUIScrollViewのDelay Touch Downを外さないといけないです。
あと、UIPageViewのsubviewsにUIScrollViewも存在するので、ご注意を。
対処方法はこちら!
public override func viewDidAppear(_ animated: Bool) {
for view in self.view.subviews {
if view is UIScrollView {
(view as? UIScrollView)!.delaysContentTouches = false
}
}
}
参考
https://qiita.com/tetsuhama/items/e09446206dc13559802d
https://stackoverflow.com/questions/41371479/uibutton-only-looks-clicked-highlighted-on-longpress
https://stackoverflow.com/questions/49593158/how-to-fix-highlighted-state-uibutton-delay-in-uipageviewcontroller-page