2011-10-11 3 views
-1

클릭하면 데이터 검색이 시작되는 UIButton이 있습니다. 그러나 검색하는 동안 사용자가 버튼을 다시 클릭하면 검색이 취소됩니다.UIButton의 더블 버튼을 계속 눌러 작업을 취소 할 수 있습니까?

관련 코드 :

- (void)searchAction:(UIButton *)sender { 

    [sender removeTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside]; 
    [sender addTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside]; 
    [animatedImages startAnimating]; 
    //action that should be done 

} 

- (void)cancelSearch:(UIButton *)sender { 
    [sender removeTarget:self action:@selector(cancelSearch:) forControlEvents:UIControlEventTouchUpInside]; 
    [sender addTarget:self action:@selector(searchNearbyAction:) forControlEvents:UIControlEventTouchDown]; 
    [animatedImages stopAnimating]; 

} 

그래서 기본적인 아이디어는 그 내가 취소하고 그-verca하도록 그 기능 변경을 클릭하면

문제는 내가 처음 클릭 할 때이다 , searchAction을 호출 한 후 아무 이유없이 cancelSearch을 호출합니다.

왜 이런 일이 일어날 지 알고 있습니까?

+0

다음 귀하의 질문의 품질. "누군가가 내게 무슨 일이 일어나는지 설명 할 수 있다면? 감사합니다."는 사람들이 당신의 질문에 대답하도록하는 좋은 방법이 아닙니다. 새 라인에서 이것을 시도해보십시오 : "왜 이런 일이 일어날 지 알고 있습니까? 고마워!" – cincodenada

답변

5

해결 방법은 다음

BOOL canCancel; 

변수 인스턴스로 BOOL을 추가하는 것입니다 및 수행 당신은 상당히 맑은, 잘 쓰여진 설명을했지만, 마지막 라인이 타협

- (void)buttonClicked:(UIButton *)sender { 
     if (!canCancel) { 
      // action that should be done 
      canCancel = YES; 
     } else if (canCancel) { 
      // cancel action 
      canCancel = NO; 
     } 
} 
+0

답장을 보내 주셔서 감사합니다. 적절한 방법입니까? 나는 그 (것)들을 분리하는 것이 더 청결 할 것이라는 점을 생각했다. 내 솔루션에 무엇이 잘못된지 알 수 있습니까? –

+0

canCancel =! canCancel – thomax

관련 문제