2013-04-20 3 views
3

일반적으로이 방법을 사용하여 이동 가능한 UIButton을 구현합니다.UIButton을 드래그 할 수 있지만 클릭 이벤트를 발생시키지 않는 방법

[button addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 

하지만 동시에 touchUpInside 이벤트가 발생하며 다른 작업을 수행하려면 touchUpInside 이벤트가 필요합니다.

이렇게 누군가를 피하는 방법을 알고 있습니까?

고맙습니다.

다음 코드를 사용하여 해결하십시오.

[button addTarget:self action:@selector(touchDown:withEvent:) forControlEvents:UIControlEventTouchDown]; 

    [button addTarget:self action:@selector(touchDragInside:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 
     [button addTarget:self action:@selector(touchUpInside:withEvent:) forControlEvents:UIControlEventTouchUpInside]; 

    - (void) touchUpInside :(UIControl*)c withEvent:ev{ 
    NSLog(@"touch Up inside"); 
    if (count) { 
     NSLog(@"here I can do something about clicking event"); 
    } 
} 

    - (void) touchDown:(UIControl*)c withEvent:ev{ 
    NSLog(@"touch Down"); 
    count = YES; 
} 

    -(void) touchDragInside:(UIControl*)c withEvent:ev{ 
    NSLog(@"touch drag inside"); 
    c.center = [[[ev allTouches] anyObject] locationInView:self.view]; 
    count = NO; 
} 
+0

[해당 항목을 복사] (http://stackoverflow.com/questions/15588604/how-to-implement-two-ibactions-in-uibutton-with-overlap) 도움이 될만한 정보를 확인하십시오. –

+0

은 그것을 비웃었다. touchUpInside 이벤트에서 플래그를 만듭니다. – zedzhao

답변

1

실제로이 작업을 수행하는 가장 좋은 방법은 UIPanGestureRecognizer를 사용하여 단추에 추가하는 것입니다. 그것은 드래그를 잘 처리하고 다른 작업을 수행하지 않고도 드래그 할 수 있습니다.

관련 문제