iPhone:如何检测滑块拖动的结束?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iPhone:如何检测滑块拖动的结束?相关的知识,希望对你有一定的参考价值。
如何在用户结束拖动滑块指针时检测事件?
答案
如果你不需要拖动之间的任何数据,那么你应该简单地设置:
[mySlider setContinuous: NO];
这样,只有当用户停止移动滑块时,您才会收到valueChanged
事件。
另一答案
在Swift 4中,您可以使用此功能
1第一步: - 在滑块中添加目标
self.distanceSlider.addTarget(self, action: #selector(self.sliderDidEndSliding(notification:)), for: ([.touchUpInside,.touchUpOutside]))
2第二步: - 创建一个功能
@objc func sliderDidEndSliding(notification: NSNotification)
{
print("Hello-->(distanceSlider.value)")
}
另一答案
Swift 3.1
有时您会希望滑块的拖动事件连续触发,但可以选择执行不同的代码,具体取决于滑块是否仍在拖动或刚刚完成拖动。
要做到这一点,我已经扩展了Andy上面的答案,它利用了滑块的isTracking
属性。我需要记录两个状态:sliderHasFinishedTracking
和sliderLastStoredValue
。
我的代码正确:
- 开始拖动时不会触发动作
- 如果用户只用一次点击轻推滑块(意味着
isTracking
仍然是false
),则触发动作
class SliderExample: UIViewController {
var slider: UISlider = UISlider()
var sliderHasFinishedTracking: Bool = true
var sliderLastStoredValue: Float!
override func loadView() {
super.loadView()
slider.minimumValue = 100.0
slider.maximumValue = 200.0
slider.isContinuous = true
slider.value = 100.0
self.sliderLastStoredValue = slider.value
slider.addTarget(self, action: #selector(respondToSlideEvents), for: .valueChanged)
// add your slider to the view however you like
}
func respondToSlideEvents(sender: UISlider) {
let currentValue: Float = Float(sender.value)
print("Event fired. Current value for slider: (currentValue)%.")
if(slider.isTracking) {
self.sliderHasFinishedTracking = false
print("Action while the slider is being dragged ⏳")
} else {
if(self.sliderHasFinishedTracking && currentValue == self.sliderLastStoredValue){
print("Slider has finished tracking and its value hasn't changed, " +
"yet event was fired anyway. 以上是关于iPhone:如何检测滑块拖动的结束?的主要内容,如果未能解决你的问题,请参考以下文章