[英]UISlider doesn't handle .touchUpInside event properly
在过去的一天中,我遇到了一个困扰我的问题,而我只是想不出解决方案...
我有一个UISlider
,范围从值1到3(这就是我们需要的方式)。 滑块是连续的,因为它实际上根据其当前值更新一些属性。 现在,我想实现一个功能,其中滑块根据用户开始触摸或结束触摸来触发动作。
我尝试使用.touchDown
方法检测触摸的开始,效果很好。 但是,当我尝试使用.touchUpInside
和.touchUpOutside
来检测用户.touchUpOutside
开手指时,该事件不会在适当的时间触发。
当我在滑杆上拖动手指(距离其起点一定距离)时,事件触发。 但是当我短暂地触摸它或移动它很少时,触摸事件根本不会触发...
有人可以帮我吗? 这是我用来设置滑块的代码:
let slider: UISlider = {
let slider = UISlider()
slider.isContinuous = true
slider.minimumValue = 1
slider.maximumValue = 3
slider.setMinimumTrackImage(#imageLiteral(resourceName: "minimumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal)
slider.setMaximumTrackImage(#imageLiteral(resourceName: "maximumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal)
let sliderThumb = #imageLiteral(resourceName: "sliderThumbImage")
slider.setThumbImage(sliderThumb, for: .normal)
slider.addTarget(self, action: #selector(adjustPriceLabel), for: .valueChanged)
slider.addTarget(self, action: #selector(handleTouchDown), for: .touchDown)
slider.addTarget(self, action: #selector(handleTouchUp), for: [.touchUpInside, .touchUpOutside])
slider.setValue(2.0, animated: true)
return slider
}()
@objc fileprivate func handleTouchDown() {
print(1234)
}
@objc fileprivate func handleTouchUp() {
print(5678)
}
您应该尝试添加.touchCancel
状态来处理handleTouchUp
,如下所示:
slider.addTarget(self, action: #selector(handleTouchUp), for: [.touchUpInside, .touchUpOutside, .touchCancel])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.