2017-10-16 11 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])