2009-08-08 4 views
0

플레이어가 화면의 팬 스택에서 보드의 4x4 필드로 카드를 탭하고 끌어서 놓으려고합니다. 내 카드는 UIImageView 클래스에서 상속 된 사용자 정의 클래스에서 인스턴스화됩니다.드래그 가능한 카드 (터치 열거 형) 문제

나는 Touches 샘플 앱으로 시작했고 이벤트 핸들러를 터치하여 수정하여 샘플 앱에서 화면 이동을 허용하는 3 개의 사각형 대신 플레이어의 카드 대신 반복되도록했습니다. 모든 것이 작동하기 전까지는 카드를 다른 카드 근처로 드래그합니다. 나는 카드가 올바르게 동작하도록하기 위해 여기에 공란을 그리는 중이다. 여기 내 코드는 다음과 같습니다

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
NSUInteger numTaps = [[touches anyObject] tapCount]; 
if(numTaps = 1) { 
    for (UITouch *touch in touches) { 
     [self dispatchFirstTouchAtPoint:[touch locationInView: self.boardCardView] forEvent:nil]; 
     } 
    } 
} 

-(void) dispatchFirstTouchAtPoint:(CGPoint)touchPoint forEvent:(UIEvent *)event 
{ 
    for (int i = 0; i<5; i++) 
    { 
     UIImageView *touchedCard = boardBuffer[i]; 
     if (CGRectContainsPoint([touchedCard frame], touchPoint)) { 
      [self animateFirstTouchAtPoint:touchPoint forView:touchedCard]; 
     } 
    } 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSUInteger touchCount = 0; 
    for (UITouch *touch in touches){ 
     [self dispatchTouchEvent:[touch view] toPosition:[touch locationInView:self.boardCardView]]; 
     touchCount++; 
    }  
} 

내 질문은 :

  1. 어떻게 내가 끌어 손가락에 의해 선택되는 다른 카드를 허용 할 수있는 터치 논리를받을 수 있나요?

  2. 어쨌든 플레이어의 손가락 바로 아래에있는 개체 만 열거하고 다른 개체가 응답하지 않도록 명시 적으로 설정할 수 있습니까?

고마워요!

답변

0

설명에서 "드래그하는 손가락으로 다른 카드를 가져 오지 못하도록 터치 로직을 얻으려면 어떻게합니까?" 손가락으로 자석을 쥐고 카드를 집어 들고있는 것처럼 보입니다. 나는 구체적으로 그것에 대해 언급하지 않았지만 이벤트 처리를 카드 클래스에 넣음으로써 각 카드가 터치에 반응해야하는지 응답자 체인에서 응답해야 하는지를 결정할 수 있습니다.

이벤트 처리에 관한 iPhone 응용 프로그래밍 가이드의 섹션을 검토해야한다고 생각합니다. 특히 Responder Objects and the Responder Chain 장.

+0

또한 터치 앱을 여러 가지 터치의 처리를 보여주기 위해 디자인 된 것 외에는 살펴 보지 않았습니다. 카드 게임이 런치 포인트로 해당 코드를 사용해야하는지 확신 할 수 없습니까? 화면의 특정 위치에서 다른 위치로 카드를 드래그하는 것에 정말로 관심이 있다면 MoveMe 앱을 확인하십시오. 매우 간단하며 여러 손가락 및 탭을 다루기 전에 단일 터치 이벤트를 이해하는 데 도움이됩니다. – Meltemi