它们是一种忽略轨迹接触并只显示拇指滑块的方法。由于一个特殊的功能,uislider被使用,它的轨迹被隐藏,这取决于用户是否触摸它。问题是滑块在另一个三维视图上,即使只有拇指滑块显示为隐藏,隐藏的滑块也会捕获事件。而不是它下面的uiview。是一种忽略滑块触摸的方法。
我现在能想到的唯一解决方法是倾听用户触摸滑块时的声音,当用户释放拇指图像时,将其放置在滑块的实际拇指位置;不过,我希望它们是一种更简单的方法。
也就是说,它更容易被看作是苹果地图视图上的一个滑块,其滑块会干扰用户的触摸。
最佳答案
对于UISlider
来说,没有一种完全清洁的方法可以做到这一点。
您可以通过子类化UISlider
和覆盖pointInside(_:withEvent:)
来实现,如果点在拇指区域中,则只返回true
,并且可以使用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)
}
}
关于swift - UISlider:触摸忽略轨道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35675978/