Swift 3.0 用に更新
これは、スライダーをリセットするためにダブルタップ認識機能を追加するというほぼ同じ問題を解決しているときに偶然出くわした古い質問です。
元の回答は、応答するアクションを追加することで、正しい方向に私たちを向けていUIControlEvents.touchDownRepeat
ます。
これは、View Controller に次の行を追加することで迅速に実行できます (たとえば、次のviewDidLoad()
メソッドで:
override func viewDidLoad()
{
super.viewDidLoad()
self.slider.addTarget(self, action: #selector(sliderTouchDownRepeat(_ :)), for: .touchDownRepeat)
}
それに応じて、セレクターで応答できます。
@objc func sliderTouchDownRepeat(_ slider: UISlider)
{
//Respond to double tap here
}
これは問題ありませんが、ダブルタップが認識されたときにスライダーの値を変更する予定がある場合は、追加のコードが必要です。
まず、アクションも追加しますUIControlEvents.valueChanged
override func viewDidLoad()
{
super.viewDidLoad()
self.slider.addTarget(self, action: #selector(sliderTouchDownRepeat(_ :)), for: .touchDownRepeat)
self.slider.addTarget(self, action: #selector(sliderDidChange(_:)), for: .valueChanged)
}
応答している現在のタッチ ダウン イベントをキャンセルして、スライダーのサムがすぐにダブル タップの場所に戻らないようにslider.cancelTracking(with: nil)
し、UIControlEvents.valueChanged
@objc func sliderTouchDownRepeat(_ slider: UISlider)
{
slider.cancelTracking(with: nil)
// Perform your own value change operation
// self.reset()
self.sliderDidChange(slider)
}
@objc func sliderDidChange(_ slider: UISlider)
{
//Update any other UI here
}
ハッピーコーディング