2010-08-15 2 views
0

저는 0에서 100까지의 값을 가진 슬라이더가 있습니다. 시뮬레이터의 모든 숫자에서 쉽게 멈출 수 있지만 장치에서 슬라이더가 약간 불안정 해지고 한 두 번 움직일 수 있습니다. 손가락을 뗍니다. iPod에서 다중 슬라이더처럼 동작하는 슬라이더를 사용하고 싶습니다. 그러나 UISlider의 "미리 패키지 된 버전"을 찾을 수 없습니다. 이미 슬라이더의 엄지 손가락을 잡은 후에는 내 터치의 y 좌표를 캡처 할 수 없습니다. 아니면 감도 문제 일 수도 있습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 감사iPhone 용 가변 속도 슬라이더 프로그래밍

답변

0

난 내 자신의 UISlider 서브 클래스를 작성하고 모든 터치 그러나 hitTest에 즉 (자신을 취급 구현하는 것 : withEvent :, return [self pointInside:point withEvent:event] ? self : nil; 단지 렌더링을 할 UISlider를 사용하여 (당신은 관련 분을 얻을 수/호출하여 최대의 구형 thumbRectForValue : 또는 무엇이든)

"내 터치의 y 좌표를 캡처 할 수 없다"는 것이 확실하지 않지만 터치 이벤트에 한 번만 액세스 할 수 있습니다 (쉽게) 가능하지 않습니다. 하나의 해킹은 모든 터치를 처리하지만 하나의 해킹은 터치 만합니다 .Bean/Moved/Ended/Cancelled.

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. –

1

당신의 뜻을 얻는다면 터치의 상대적 y 위치로 다양한 속도로 움직일 수 있습니다. 나는 세정기 컨트롤을 사용하지 않았습니다. UIResponder에서

UISlider 제어 상속 당신이 그것을 서브 클래스가 당신에게 Y 좌표를 제공하기 때문에 자신의

– touchesBegan:withEvent: 
– touchesMoved:withEvent: 
– touchesEnded:withEvent: 

있는 touchesMoved 특별한 관심이 될 것입니다 추가 할 수 있습니다. super에 전화하고 응답 체인에 이벤트를 전달하는 것을 잊지 마십시오.

아직 이벤트가 발생하지 않으면 엄지 손가락이 앞에 있으며이를 가로 채고있을 수 있습니다. 슬라이더 위에 일반 투명한 UIView 하위 클래스를 배치하고 터치를 가로 채서 좌표를 가져오고 다시 이벤트를 체인 위로 전달합니다.

는 I 번 코드를 사용했을

int progressAsInt = ((int)((completionSlider.value + 2.5f)/5.0f) * 5); 
[sender setValue:progressAsInt animated:YES]; 

을 슬라이더의 동작 기능에 UISlider은 멈춤 쇠와 볼륨 제어와 같이 이산 값의 엄지를 설정하기 위해. 허용 된 입도를 변경하거나 실제 터치 이벤트로 표시되는 이동량에 영향을 주도록 감지 한 터치의 y 위치로 결정된 다른 값을 사용할 수 있습니다.

+0

통찰력을 얻고 올바른 방향으로 나아갈 수있게 해줘서 고마워요. –