在我的应用程序中,有一个 UISlider ,只有在长按后才能滑动(比方说,按下0.1秒后)。为防止滑块立即进行交互,我将mySlider.isUserInteractionEnabled = false
设置为默认值。但是,由于.isUserInteractionEnabled
将禁用所有功能,包括长按手势,我使用与其顶部滑块相同大小的另一个透明UIButton
来检测长按,并设置回调操作中的mySlider.isUserInteractionEnabled = true
。这样可以正常工作,除了必须首先释放UIButton
然后用户再次点击滑块以滑动它而不是直接在同一触摸中拖动滑块。这使滑块非常不方便使用。因此,我想知道是否:
或
非常感谢任何答案。
已添加:我的解决方案如下所示:在TableViewCell
中,有一个标签,一个滑块和一个与滑块尺寸相同的隐形按钮(灰色背景)区域)。我设置滑块属性isUserInteractionEnabled == false
,然后添加手势识别器来操作滑块(例如单击,双击我的自定义功能,以及长按手势启用滑块)。长按按钮后,滑块的isUserInteractionEnabled
将设置为true,直到拇指转到新值。
基本上我只想禁用滑块以对短按钮做出快速响应,滑块的其他功能将保持不变。我想可能有更好的方法来实现这一点,到目前为止使用透明按钮是我能想到的唯一方法。
答案 0 :(得分:2)
您可以在滑块上禁用用户互动,然后在其上添加手势识别器(虽然不完全确定用户交互)。也许做这样的事情
let longPress = UILongPressGestureRecognizer(target: self.slider, action: Selector("longPressAndSlide:"))
longPress.minimumPressDuration = 0
self.addGestureRecognizer(longPress)
在longPressAndSlide
中,您可以计算移动的方向和增量,并相应地设置滑块的值。
实际上已经多次回答了这个问题。只是一个更好的搜索会帮助你更多。
<强>更新强> 查看 - How to enable "tap and slide" in a UISlider?
下的答案最新更新 正如评论所示,我们可以在滑块顶部添加一个按钮,并在其上添加longPress手势。可以在手势的处理程序Action中完成处理。