2017-10-16 3 views
0

私は過去の日のために私を悩ませてきた問題を抱えていると私はちょうどの範囲ソリューション...UISliderは.touchUpInsideイベントを処理しない正しく

私はUISliderを持っているし、把握することはできません値1〜3(それが必要な方法です)。現在の値に応じていくつかのプロパティを実際に更新するため、スライダは連続しています。今度は、スライダーがユーザーが触れ始める気質に応じてアクションをトリガーする、またはタッチを終了する機能を実装したいと思います。

私は.touchDownメソッドを使用して完全に動作するタッチの開始を検出しようとしました。しかし、.touchUpInside.touchUpOutsideを使用してユーザーが指を持ち上げたときに検出しようとすると、そのイベントは適切なタイミングで発生しません。

スライダの周りに指をドラッグすると、開始点から一定の距離を置いてイベントが発生します。しかし、私がちょうどそれを少し触れるか、それを少しだけ動かすと、タッチアップイベントはまったく発生しません...

誰かが私を助けることができますか?ここで私は私のスライダーを設定するために使用しているコードは次のとおりです。

let slider: UISlider = { 
    let slider = UISlider() 
    slider.isContinuous = true 
    slider.minimumValue = 1 
    slider.maximumValue = 3 
    slider.setMinimumTrackImage(#imageLiteral(resourceName: "minimumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal) 
    slider.setMaximumTrackImage(#imageLiteral(resourceName: "maximumSliderTrackImage").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)), for: .normal) 

    let sliderThumb = #imageLiteral(resourceName: "sliderThumbImage") 
    slider.setThumbImage(sliderThumb, for: .normal) 

    slider.addTarget(self, action: #selector(adjustPriceLabel), for: .valueChanged) 
    slider.addTarget(self, action: #selector(handleTouchDown), for: .touchDown) 
    slider.addTarget(self, action: #selector(handleTouchUp), for: [.touchUpInside, .touchUpOutside]) 

    slider.setValue(2.0, animated: true) 

    return slider 
}() 

@objc fileprivate func handleTouchDown() { 
    print(1234) 
} 

@objc fileprivate func handleTouchUp() { 
    print(5678) 
} 
+0

だから何を言っていることはあなたのことです'handleTouchDown()'が呼び出されるのを参照してください。また、 'handleTouchUp()'が呼び出されないことがありますか? – Ladislav

+0

正確です。具体的にはhandleTouchUp()は、スライダを開始位置から一定の距離だけ移動させると呼び出されます。 –

+0

'setMinimumTrackImage'、' setMaximumTrackImage'、 'setThumbImage'を削除して再度テストしてカスタムサム画像責任がある? – Ladislav

答えて

0

あなたはとても好きなようにもhandleTouchUpに行くために.touchCancel状態を追加してみてくださいする必要があります

slider.addTarget(self, action: #selector(handleTouchUp), for: [.touchUpInside, .touchUpOutside, .touchCancel]) 
関連する問題