我正在尝试检测用户何时完成编辑滑块。到目前为止,我可以在使用AllTouchEvents参数时检测到该事件。
radiusSlider.addTarget(self, action: "test", forControlEvents: UIControlEvents.AllTouchEvents)
但实际上我需要的是EditingDidEnd才能工作。但它不起作用。那是因为滑块在iOS9上不支持这种类型的事件吗?
radiusSlider.addTarget(self, action: "test", forControlEvents: UIControlEvents.EditingDidEnd)
我已经尝试了以下帖子,因为它听起来非常相似,但无法使Obj-C参数在Swift上运行。由于Swift显然不提供UIControlEventValueChanged作为UISlider的addTarget事件。 UISlider's editingDidEnd event is not working in iPad
答案 0 :(得分:3)
UISlider
在适当时发送这些UIControlEvents
个事件:
TouchDown
TouchDragInside
TouchDragOutside
ValueChanged
TouchUpInside
TouchUpOutside
TouchDragEnter
TouchDragExit
TouchCancel
它不会发送EditingDidEnd
或任何其他编辑事件。相反,您应该订阅TouchUpInside
,TouchUpOutside
和TouchCancel
的所有内容,因为任何这些事件都意味着用户停止调整滑块。
如果滑块的continuous
属性为true
,则每次拖动更改其值时,它都会发送ValueChanged
。如果continuous
为false
,则最后只发送ValueChanged
。
您可以像这样订阅ValueChanged
:
radiusSlider.addTarget(self, action: "test", forControlEvents: [.ValueChanged])
(Swift 2语法。)