2011-02-17 4 views
3

짧은 버전 :사용자 정의 조치 내 문제의

내가 추가 매개 변수를 내 UITapGestureRecognizer의 "조치"를 만드는 방법을 파악하고, 실제로 사용할 수 없습니다. 나는 그것을 만들려고 노력하고

있도록 (NSLog에) 내 아이 패드 APP 기록 그들이 내 응용 프로그램의 UIButtons 중 하나를 누를 때마다 발생하는 UITouch의 좌표 :

여기 내 문제의 개요입니다. 터치의 위치는 터치 된 버튼에 상대적이어야합니다. 내가 무슨 짓을했는지

: 나는 UITapGestureRecognizer을 구현 내 각 버튼에 추가 한

. 내 문제는 각 단추에 대해 동적이어야하기 때문에 사용하는 동작입니다. 나는이 작동하는지 알게되면

UITapGestureRecognizer *iconClickRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(logIcon:withTag:)]; 
[iconClickRecognizer setNumberOfTapsRequired:1]; 
[iconClickRecognizer setNumberOfTouchesRequired:1]; 
[iconClickRecognizer setDelegate:self]; 
[[self.view viewWithTag:1] addGestureRecognizer:iconClickRecognizer]; 

[iconClickRecognizer release]; 

, 나는 자신의 태그로 모든 버튼에 iconClickRecognizer를 추가하기위한 루프를 사용합니다 :

나는 현재이 코드가 있습니다.

logIcon은 : (int)를 withTag 방법은 여기에 표시됩니다 :

-(void)logIcon:(UIGestureRecognizer *)gestureRecognizer withTag:(int)tag { 
    NSLog(@"tag X: %f", [gestureRecognizer locationInView:(UIView*)[self.view viewWithTag:tag]].x); 
    NSLog(@"tag Y: %f", [gestureRecognizer locationInView:(UIView*)[self.view viewWithTag:tag]].y); 
} 

무엇을 작동하지 않습니다 :

나는 하드 코드 logIcon 방법으로 태그, 그것을 기록 할 때 정보를 올바르게. 그러나 이 메서드를 동적으로 만드는 방법을 모르겠다., 실제로 "태그"매개 변수를 사용합니다.

도움을 주시면 감사하겠습니다.

덕분에, 알렉스

답변

4

워드 프로세서 작업의 형식이어야 지정

- (void)handleGesture; 
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer; 

하지 않는 양식 : 그래서 당신이 그것을 전체에있는 gestureRecognizer를 요청할 수

- (void)logIcon:(UIGestureRecognizer *)gestureRecognizer withTag:(int)tag 

창을 클릭 한 다음 버튼과 비교하거나 단추를 따라 가면서 각 단추와 관련하여 제스처를 묻습니다.

아마도 UIButton을 하위 클래스로 만들고 각 단추를 대상으로 삼는 것이 가장 좋습니다. 그러면 당신은 당신이 어떤 시야인지 정확히 알 수 있습니다.

8

문제는 만 대상/액션 스타일의 등록에서 하나 개의 인수를 얻을 수 있다는 것입니다, 즉, 보낸 사람 (이 경우는 제스처 인식기 자체)입니다. 임의의 컨텍스트를 전달할 수는 없습니다. 하지만 당신의 행동에 따라 인식기의 view 속성을 확인하고 해당보기의 tag을 검사 할 수 있습니다. UIGestureRecognizer 클래스

+0

이것을 처리하는 가장 좋은 방법입니다. 보기에 태그를 지정하고 제스처 인식기에서보기에 액세스합니다.좋은 대답! – WendiKidd

+0

@WendiKidd 감사합니다! –

관련 문제