为啥 UIButton.showsTouchWhenHighlighted 不需要将 UIScrollView.delaysContentTouches 设置为 false?
Posted
技术标签:
【中文标题】为啥 UIButton.showsTouchWhenHighlighted 不需要将 UIScrollView.delaysContentTouches 设置为 false?【英文标题】:Why is setting UIScrollView.delaysContentTouches to false not necessary for UIButton.showsTouchWhenHighlighted?为什么 UIButton.showsTouchWhenHighlighted 不需要将 UIScrollView.delaysContentTouches 设置为 false? 【发布时间】:2021-02-16 23:47:29 【问题描述】:我正在为 UIButton 的正常状态和突出显示状态设置图像。但是,由于它在 UIScrollView 中,除非我将滚动视图的 delaysContentTouches
设置为 false,否则除非用户长按按钮,否则按钮的突出显示状态不会显示。
延迟内容触摸并不理想,因为用户无法在按钮顶部启动滚动手势。
但是,UIButton.showsTouchWhenHighlighted
似乎能够在点击时立即显示突出显示的状态,而无需将 delaysContentTouches
设置为 false。有没有办法使用 UIButton 为其图像获得相同的行为?
【问题讨论】:
【参考方案1】:由于似乎UIButton.showsTouchWhenHighlighted
和UIControl.State.highlighted
对“突出显示”的含义有不同的标准,我最终制作了一个自定义UIButton
覆盖setImage
以简单地将图像保存在自定义属性中并覆盖touchesBegan
/touchesEnded
/touchesCancelled
调用super.setImage
并实际设置图像(仅设置.normal
)。我只是使用.normal
并完全忽略.highlighted
,因为state
的行为不像我想要的那样(showsTouchWhenHighlighted
的行为方式)。
【讨论】:
以上是关于为啥 UIButton.showsTouchWhenHighlighted 不需要将 UIScrollView.delaysContentTouches 设置为 false?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?