2009-08-08 9 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

また、私はTouchesアプリが複数のタッチの処理を紹介するように設計されていることを知る以外には検討していません。あなたのカードゲームは、そのコードを打ち上げポイントとして使用しているはずですか?あなたが本当に画面上の場所から別の場所へカードをドラッグするだけの場合。 MoveMeアプリをチェックしてください。これは非常に簡単で、複数の指とタップに取り組む前にシングルタッチイベントを理解するのに役立ちます。 – Meltemi

関連する問題