1

私はこれと約1時間戦ってきました。UIViewiOS FacebookアプリがメインのUIViewをパンし、左側にナビゲーションテーブルを表示するのと同じ方法でパンするようにしようとしています。したがって、右にスワイプすると、右端までパンされ、ナビゲーションテーブルが表示されます。左にスライドして戻すことができます。つまり、基本的にはスライダーのようなものです。

UIPanGestureRecognizer割り当てられていUIViewます。そして、これが私selectorのジェスチャーです:

- (void)swipeDetected:(UIPanGestureRecognizer *)recognizer
{

    CGPoint newTranslation = [recognizer translationInView:self.view];

    NSLog(@"%f", newTranslation.x + lastTranslation.x);

    // only pan appropriately when view is within correct bounds
    if (lastTranslation.x + newTranslation.x >= 0 && lastTranslation.x + newTranslation.x <= 255)
    {

        self.navController.view.transform = CGAffineTransformMakeTranslation(newTranslation.x, 0);

        if (recognizer.state == UIGestureRecognizerStateEnded) {

            // if navcontroller is at less than 145px, snap back to 0
            if (newTranslation.x + lastTranslation.x <= 145)
                self.navController.view.transform = CGAffineTransformMakeTranslation(0, 0);

            // else if its at more than 145px, snap to 255
            else if (newTranslation.x + lastTranslation.x >= 145)
                self.navController.view.transform = CGAffineTransformMakeTranslation(255, 0);

            lastTranslation.x += newTranslation.x;
        }
    }
}

これは、UIViewを右にスライドするときに完全に機能します。その後、255pxで固定されるため、一部が画面に表示され、消えることはありません。ただし、その位置にあるときに左にスライドすると、パンジェスチャに従わずに、原点までジャンプします。

何故ですか?どうすれば修正できますか?

ありがとう

4

0 に答える 0