2013-02-16 2 views
0

무엇이 잘못되었는지 알 수 없습니다. 아래 코드는 내 코드이며 대리자 메서드를 호출 한 다음 중지합니다.UIGestureRecognizer 샘플 코드

어떻게해야합니까? 이러한 위임 메서드를 사용하는 샘플 코드를 찾을 수 없었습니다. 내가 찾은 것은 다른 대표자를 사용하여 스 와이프 및 탭에 대한 제스처 인식기입니다. 지금까지

코드 :

-(void)initTouchesRecognizer{ 

    DLog(@""); 

    recognizer = [[UIGestureRecognizer alloc] init]; 

    [self addGestureRecognizer:recognizer]; 

} 


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 


    DLog(@""); 


    NSSet *allTouches = [event allTouches]; 
    for (UITouch *touch in allTouches) 
    { 


    } 

} 




-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [[event allTouches] anyObject]; 
    CGPoint location = [touch locationInView:touch.view]; 

} 




- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
     DLog(@""); 

} 



- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self touchesEnded:touches withEvent:event]; 
} 

나는 나의 이미지보기를 initwithrect에서 initTouchesRecognizer를 호출합니다.

근본적으로 잘못된 것은 무엇입니까?

+0

무엇을 근본적으로 달성하려고합니까? :) –

+0

특별한 일을하려고하지 않는 한, 보통 이러한 방법을 덮어 쓰지는 않습니다. 제스처 인식기의 선택자를 제공하고 거기에 코드를 입력합니다. Andrei의 질문에 답해야합니다. 그래서 우리는 당신이 성취하려는 것을 알고 있습니다. – rdelmar

+0

제스처를 감지하고 싶습니다. 그것은 수도꼭지, 또는 스 와이프 .. 또는 화면을 가로 질러 손가락을 움직이는 사람 일 수 있습니다. – stackOverFlew

답변

0

UIGestureRecognizer는 추상적 인 클래스이므로보기에 직접 추가하지 않아도됩니다. 예를 들어, UITapGestureRecognizer 또는 UIPanGestureRecognizer와 같은 UIGestureRecognizer를 상속 한 콘크리트 하위 클래스를 사용해야합니다. 당신은 또한 당신 자신의 구체적인 서브 클래스를 만들 수도 있지만, 그것은 보통 필요하지 않습니다. 여기

은 (종종 제스처 컨트롤러에서보기에 첨가하고, 뷰 클래스 코드)보기에 UIPanGestureRecognizer 추가의 예이다 :

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(mySelector:)]; 
[self addGestureRecognizer:panGesture]; 

을이 경우, 셀렉터 것 이 뷰에서 사용자가 팬 할 때마다 호출됩니다. UITapGestureRecognizer를 추가하면 사용자가 탭 할 때 선택기가 호출됩니다.

당신은 더 많은 정보를 원하시면 사과 문서를 확인할 수 있습니다 : 또한 http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html#//apple_ref/doc/uid/TP40009541-CH2-SW2

을, 나는 위대한 사람이 될 폴 해거 티의 스탠포드 강의를 찾아 여기 제스처 인식기에 하나 : https://itunes.apple.com/ca/course/6.-views-gestures-january/id593208016?i=132123597&mt=2

또한 이해한다 게시 한 메서드 중 하나라도 대리자 메서드가 아니며 코드에 추가 한 UIGestureRecognizer와 아무 관련이 없습니다. 그것들은 당신이 오버라이드하고있는 UIResponder (UIView가 상속받은 클래스)의 인스턴스 메소드입니다. 추상 UIGestureRecognizer도 같은 이름을 가진 인스턴스 메소드를 가지고 있지만 클래스에서 호출되는 UIGestureRecognizer 메소드는 아닙니다.

0

제스처 인식기를 추가 할 필요가 없습니다. touchesMoved, touchesEnded 및 touchesBegan 메서드를 재정 의하여 화면에서 사용자의 손가락을 추적 할 수있었습니다.

은 단순히 전화를하지 않습니다

-(void)initTouchesRecognizer 

코드, 내가 원래 게시 된 코드가 작동합니다.