2015-10-28 29 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])