3

ユーザーが画面上で「フリック」できるようにしたい UIView がいくつかあります。それらはスクロール ビューではありません。これらには、ラスター イメージ (png) が含まれているだけです。始めるのに役立つサンプルコードなどを教えてもらえますか? 「フリック」(「ナッジ」またはドラッグアンドドロップに対して)を検出し、「フリック」の方向にビューを移動するのに役立つ「MoveMe」よりも少し重いものはありますか?

OpenGLはおそらくやり過ぎです。可能であれば、Core Graphics/Animation の領域にとどまりたいです。

4

6 に答える 6

1

nazgul42の回答を取得し、言及された2つのイベント間の時間もチェックすることで、これを簡単に達成できると思います。短い時間と長い距離を組み合わせると、フリックと解釈できます。また、両方のタッチ イベント ポイントの座標を計算することで、フリックの方向を決定できます。

于 2009-08-03T14:53:35.520 に答える
0

とが2つありUIViewaViewとが2つUIImageViewsあるpage1としpage2ます。にpage1すでにサブビューがあるとするとaView、このコードは次のようpage1になりpage2ます。

[UIView beginAnimations:@"someId" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:aView cahe:YES];
[page1 removeFromSuperview];
[aView addSubview:page2];
[UIView commitAnimations];
于 2009-06-25T18:14:16.997 に答える
0

ここでスレッドを見つけましたが、方法は気になります-

http://discussions.apple.com/message.jspa?messageID=7862186

速度やタイムスタンプは考慮されません。最後にイベントが更新されてからの距離です。Apple がイベント更新の頻度/粒度を変更した場合、このコードは壊れる可能性があります。

于 2010-03-12T23:10:38.827 に答える
0

UIPanGentureRecognizerサンプルコードを使用してみてください:

UIPanGestureRecognizer *imageGesture = [[UIPanGestureRecognizer alloc]
                                         initWithTarget:self
                                         action:@selector(imageDragged:)];
[imageView1 addGestureRecognizer:imageGesture];

それから

- (void)imageDragged:(UIPanGestureRecognizer *)gesture{
UIImageView *imageView = (UIImageView *)gesture.view;
CGPoint translation = [gesture translationInView:imageView];

imageView.center = CGPointMake(imageView.center.x + translation.x,
                               imageView.center.y + translation.y);
imageView2.center = imageView.center;
imageView3.center = imageView.center;

[gesture setTranslation:CGPointZero inView:imageView];}
于 2015-10-30T07:37:53.217 に答える
0

タッチを検出するには、View Controller で touchesBegan メソッドと touchesEnded メソッドを使用し、touchesBegan からタッチを保存します。タッチが左または右にある程度以上移動した場合、それはフリックであり、左または右。

于 2009-06-25T21:22:28.597 に答える