EditingDidEnd事件无法在UISlider

时间:2015-10-28 19:49:35

标签: swift

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

1 个答案:

答案 0 :(得分:3)

UISlider在适当时发送这些UIControlEvents个事件:

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

它不会发送EditingDidEnd或任何其他编辑事件。相反,您应该订阅TouchUpInsideTouchUpOutsideTouchCancel的所有内容,因为任何这些事件都意味着用户停止调整滑块。

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

您可以像这样订阅ValueChanged

radiusSlider.addTarget(self, action: "test", forControlEvents: [.ValueChanged])

(Swift 2语法。)