0

初心者のobj-cの質問。

私の仕事は、iPad用に視覚的に表現されたテストを作成することです。ビューでは、3つのUIImage(テスト質問への回答の画像を含む)があり、回答のために領域にドラッグされます。右の画像を選択した場合は、この領域にとどまる必要があります。そうでない場合は、開始位置に戻ります。ユーザーが回答のためにエリア内にないドラッグを停止した場合も、開始位置に戻る必要があります。私はこれを実装しようとしました:http://www.cocoacontrols.com/platforms/ios/controls/tkdragviewですが、私は非常に初心者なので、私には難しすぎます。

PanRecognizerで画像の単純なドラッグを実装したので、3つの画像からすべての画像をドラッグします

 -(IBAction)controlPan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

正しい考えである場合、開始座標と宛先座標を使用してCGPointを設定してから、パンジェスチャメソッドをカスタマイズする必要がありますか?それが正しくない場合、どのようにこれを行うことができますか?

4

1 に答える 1

2

この 3 つの方法を検討できます。おそらく、これらの方が簡単です。

– touchesBegan:withEvent:
– touchesMoved:withEvent:
– touchesEnded:withEvent:

詳細なデモ– touchesBegan:withEvent:は次のとおりです。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesBegan:touches withEvent:event];
    UITouch *touched = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touched.view];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];
    UITouch *touched = [[event allTouches] anyObject];
    // Here I suppose self.imageView contains the image user is dragging.
    CGPoint location = [touch locationInView:touched.view];
    // Here the check condition is the image user dragging is absolutely in the answer area.
    if (CGRectContainsRect(self.answerArea.frame, self.imageView.frame)) {
        // set transition to another UIViewController
    } else {
        self.imageView.center = location;    // Here I suppose you just move the image with user's finger.
    }
}

これは、このUIResponder Class Referenceに関する Apple のドキュメントです。

于 2012-11-15T11:55:08.243 に答える