2013-05-18 1 views
0

touchesBeganUILabel을 터치하면 메서드 [self animateWindow];가 호출됩니다. 그것은 애니메이션을 생성하고 창을 위에서 가져옵니다. 다시 UILabel을 터치하면 애니메이션이 나타나고 이미 표시된 창을 다시 가져 오기 때문에 해당 메서드 [self animateWindow];을 다시 호출하지 않아야합니다. 어떻게해야합니까? 어떤 도움이 필요합니까? 나는 온통 검색을 시도했지만 정확한 답을 찾을 수 없었다.메서드가 호출되어 다시 호출되지 않는 경우 확인

+0

함수 호출 이전 또는 현재 상태를 확인할 수 있습니까? –

+0

이 C++, Objective-C 또는 Objective-C++입니까? 적절한 경우 태그를 다시 지정하십시오. – Angew

+0

목표 -C 고마워. – Vikr

답변

3

그냥 플래그로 사용 같은 BOOL 인 인스턴스 변수 생성 : 코멘트에 펼쳐진 설명을 바탕으로

@property (assign, monatomic) BOOL hasAnimated; 

- (void) touchesBegan... 
{ 
    if (!self.hasAnimated) { 
     [self animateWindow]; 
     self.hasAnimated = YES; 
    } 
} 

, 당신은 확인 좀 더 로직을 추가 할 필요 해요을하는 레이블이 실제로 터치되고 있습니다. 더 나은 해결책은 각 레이블에 제스처 인식기를 사용하는 것입니다. 그런 다음 제스처 인식기의보기에 직접 액세스하여 어떤 레이블인지 확인하고 (아마도 tag을 사용) 어떤 상태인지에 따라 제스처를 추가하거나 제거 할 수 있습니다 (일부 레이블 만 터치에 응답해야 함). 표시 또는 숨기기).

+0

정확히 어떻게합니까? viewDidLoad의 – Vikr

+0

은 BOOL을 만들어야합니다 hasAnimated = FALSE; ? – Vikr

+0

예. 상태 'hasAnimated = FALSE;' 귀하의 viewDidLoad 내부. –

관련 문제