私はこれと約1時間戦ってきました。UIView
iOS 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で固定されるため、一部が画面に表示され、消えることはありません。ただし、その位置にあるときに左にスライドすると、パンジェスチャに従わずに、原点までジャンプします。
何故ですか?どうすれば修正できますか?
ありがとう