2015-10-28 89 views
1

我试图检测用户何时完成编辑滑块。到目前为止,我可以在使用AllTouchEvents参数时检测事件。EditingDidEnd事件不能在UISlider上工作

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

回答

2

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

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

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

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

您可以订阅ValueChanged这样的:(雨燕2语法)

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