我试图检测用户何时完成编辑滑块。到目前为止,我可以在使用 AllTouchEvents 参数时检测到事件。
radiusSlider.addTarget(self, action: "test", forControlEvents: UIControlEvents.AllTouchEvents)
Run Code Online (Sandbox Code Playgroud)
但实际上我需要的是 EditingDidEnd 工作。但它不起作用。那是因为滑块在 iOS9 上不支持这种类型的事件吗?
radiusSlider.addTarget(self, action: "test", forControlEvents: UIControlEvents.EditingDidEnd)
Run Code Online (Sandbox Code Playgroud)
我尝试了以下帖子,因为它听起来非常相似,但无法使 Obj-C 参数在 Swift 上工作。由于 Swift 显然没有提供 UIControlEventValueChanged 作为 UISlider 的 addTarget 事件。 UISlider 的editingDidEnd 事件在iPad 中不起作用
A在适当的时候UISlider发送这些UIControlEvents事件:
TouchDownTouchDragInsideTouchDragOutsideValueChangedTouchUpInsideTouchUpOutsideTouchDragEnterTouchDragExitTouchCancel它不发送EditingDidEnd或任何其他编辑事件。相反,你应该订阅所有的TouchUpInside,TouchUpOutside以及TouchCancel,因为任何这些事件意味着用户停止调整滑块。
如果滑块的continuous属性是true,则ValueChanged每次拖动更改其值时它都会发送。如果continuous是false,它只ValueChanged在最后发送。
您可以ValueChanged像这样订阅:
radiusSlider.addTarget(self, action: "test", forControlEvents: [.ValueChanged])
Run Code Online (Sandbox Code Playgroud)
(Swift 2 语法。)