1

私は次のUIPanGestureRecognizer設定をしています:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self.superview];
        gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y + translation.y);
        [gesture setTranslation:CGPointZero inView:self.superview];
    }
}

ビュー内をパンして、同じビュー内である場所を別の場所に移動したい。これが行っているのは、ビューを移動することです。どうすればビューを変更して、自分のやりたいことを実行できますか?

更新:これは、私の方法が正しくパンするようになった方法です

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self];;
        self.origin = CGPointMake(self.origin.x + translation.x, self.origin.y + translation.y);
        [gesture setTranslation:CGPointZero inView:self];
    } 
}

origin私のビューでは、グラフの中心がどこにあるかを示すプロパティです。セッターメソッドには、setNeedsDisplayこの値が変更されるたびに更新するものがあります

4

1 に答える 1

6

OK、それで(これは私の頭のすぐ上にあり、テストされていません)UIScrollViewを使用せずに水平方向にスクロールしたい場合は、これを試してください:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)) {
        CGPoint translation = [gesture translationInView:self.superview];
        gesture.view.center = CGPointMake(gesture.view.center.x + translation.x, gesture.view.center.y);
        [gesture setTranslation:CGPointZero inView:self.superview];
    }
}

あなたがすることは、を除外することだけです+ translation.y

UIScrollView(私がお勧めします)を使用したい場合は、次のチュートリアルの1つを参照してください。ネット上に優れたUIScrollViewチュートリアルはありますか?

于 2012-02-08T22:34:58.277 に答える