UISlider:触摸忽略轨道

UISlider: Touch ignore track

这是一种忽略轨道触摸并仅显示拇指滑块的方法。由于使用了 UISlider 的特定功能,并且根据用户是否触摸它来隐藏它的轨道。问题是滑块在另一个 3D 视图上,即使隐藏时只有拇指滑块显示,隐藏的滑块也会捕获事件。而不是它下面的 uiview。是他们忽略滑块触摸的一种方法。

我现在能想到的唯一解决方法是监听用户何时触摸滑块以及何时松开将 ThumbImage 的图像放置在滑块的实际 Thumb 所在的确切位置;但是,我希望他们是一种更简单的解决方法。

即更容易将其视为 Apple MapView 上的滑块,其滑块会干扰用户触摸

UISlider.

没有完全符合犹太洁食标准的方法

你可以通过子类化 UISlider 并覆盖 pointInside(_:withEvent:) 来做到这一点,如果点在拇指区域,你可以得到拇指区域使用 thumbRectForBounds(_:trackRect:value:),但该方法的文档说“您不应直接调用此方法。”

不过,这似乎有效:

class MySlider: UISlider {

    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
        let thumbRect = thumbRectForBounds(bounds, trackRect: trackRectForBounds(bounds), value: value)
        return thumbRect.contains(point)
    }

}