2009-08-07 6 views
0

iPhone에서 다양한 속도 슬라이더 컨트롤을 만들고 싶습니다. 기본적으로 UISlider 컨트롤을 사용하고 있지만 손가락이 현재보기에 있는지 감지하여이 컨트롤에 두 번째 차원을 추가하고 싶습니다.슬라이더 컨트롤을 움직일 때 손가락이 어디 있는지 알아 내려고

E.G. 사용자는 컨트롤을 좌우로 슬라이드 할 수 있지만 뷰에서 손가락의 세로 위치를보고 싶습니다.

내 문제는 슬라이더 컨트롤을 조작 할 때입니다. 다음 함수는 호출되지 않습니다.

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

이렇게하면 슬라이더로 전송된다고 가정하기 때문에 터치 이벤트를 감지 할 수 없습니다. 누구나 이걸하려고 했나요? 아니면 하위 클래스 UISlider해야합니다. 흠.

+0

흠 나는 UISlider.h를보고 있는데 어떤 이벤트라도 잡을 수있는이 클래스에 전송 된 것처럼 보이지 않습니까? –

+0

은 http://oleb.net/blog/2011/01/obslider-a-uislider-subclass-with-variable-scrubbing-speed/에 대한 완벽한 자습서입니다. – blackmoon

답변

0

헤더

#import <Foundation/Foundation.h> 


@interface JBSlider : UISlider { 
    double verticalTouchDelta; 
} 
@property(nonatomic, assign) double verticalTouchDelta; 

@end 

기본 파일

수입 "JBSlider.h"

@implementation JBSlider

@synthesize verticalTouchDelta; - (void) sendAction : (SEL) 액션을 (ID) 대상 forEvent : (UIEvent *) 이벤트 { [super sendAction : 액션 대상 : forEvent : 이벤트]; // NSLog (@ "HI HI");

UITouch * touch = [[event touchesForView:self] anyObject]; 
//NSLog(@"%f", [touch locationInView:self].y); 
verticalTouchDelta = [touch locationInView:self].y;  

}

@end

단순히 인터페이스 빌더에서 JBSlider에 UISlider에서 슬라이더를 변경합니다. 멋진 작품입니다.

관련 문제