0

UIView を水平方向にのみ移動するパン ジェスチャが必要です。

これまでのところ、パン ジェスチャの開始時には水平方向の動きのみが許可されていますが、パン ジェスチャが開始されると、UIView は水平方向と垂直方向の両方に移動します

  • UIView が常に垂直方向に移動しないようにするにはどうすればよいですか?
  • UIView の上部が常に画面の上部にある方法はありますか?

つまり、設定された位置から垂直に移動することはありません

これが私の現在のコードです:

- (void)panePanned:(UIPanGestureRecognizer *)gestureRecognizer
{    
    switch (gestureRecognizer.state) {
        case UIGestureRecognizerStateBegan: {
            self.paneStartLocation = [gestureRecognizer locationInView:self.mainView];
            self.paneVelocity = 0.0;
            break;
        }
        case UIGestureRecognizerStateChanged: {
            CGPoint panLocationInPaneView = [gestureRecognizer locationInView:self.mainView];
            CGFloat velocity = -(self.paneStartLocation.x - panLocationInPaneView.x);
            CGRect newFrame = self.mainView.frame;

            newFrame.origin.x += (panLocationInPaneView.x - self.paneStartLocation.x);
            if (newFrame.origin.x < 0.0) newFrame.origin.x = 0.0;
            self.mainView.frame = newFrame;

            if (velocity != 0) {
                self.paneVelocity = velocity;
            }
            break;
        }
        case UIGestureRecognizerStateEnded: {
            [self animate];
            break;
        }
        default:
            break;
    }
}

ありがとう!

4

2 に答える 2

2

開始状態でスクロールを無効にし、終了状態で再度有効にしてみてください。

[scrollView setScrollEnabled:NO];    // in case UIGestureRecognizerStateBegan
[scrollView setScrollEnabled:YES];   // in case UIGestureRecognizerStateEnded
于 2013-04-10T02:31:34.310 に答える