EditingDidEnd 事件不适用于 UISlider

Gui*_*uce 2 swift

我试图检测用户何时完成编辑滑块。到目前为止,我可以在使用 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 中不起作用

rob*_*off 5

A在适当的时候UISlider发送这些UIControlEvents事件:

  • TouchDown
  • TouchDragInside
  • TouchDragOutside
  • ValueChanged
  • TouchUpInside
  • TouchUpOutside
  • TouchDragEnter
  • TouchDragExit
  • TouchCancel

它不发送EditingDidEnd或任何其他编辑事件。相反,你应该订阅所有的TouchUpInsideTouchUpOutside以及TouchCancel,因为任何这些事件意味着用户停止调整滑块。

如果滑块的continuous属性是true,则ValueChanged每次拖动更改其值时它都会发送。如果continuousfalse,它只ValueChanged在最后发送。

您可以ValueChanged像这样订阅:

radiusSlider.addTarget(self, action: "test", forControlEvents: [.ValueChanged])
Run Code Online (Sandbox Code Playgroud)

(Swift 2 语法。)