3

私が達成したいこと: http://youtu.be/SUWxVtpc0JA

私が達成できること: http://youtu.be/b1xH6Xsvxcg

テキスト ページからメニューに変更するときに Year Walk Companion アプリが行うのと同じ垂直視差スクロール効果を実行しようとしています。

を使用して上下に移動することUIScrollViewsにより、水平方向にのみ移動するこの効果を実行できました(ネストされた配列間をスワイプすることを想像してください)。UIPanGestureRecognizerただしUIScrollView、垂直スクロールを使用すると壊れます。

下にスクロールするUIScrollViewと、期待どおりに移動します。上に移動しても同じです。ただし、コンテンツではなく、それ自体を垂直にUIPanGestureRecognizer動かしたいときに問題が発生します。UIScrollViewこれまでのところUIScrollView、関数のテストを行うためにサブクラス化しましたgestureRecognizerShouldBegin

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    UIPanGestureRecognizer* pan = (UIPanGestureRecognizer*)gestureRecognizer;
    CGPoint panGestureTranslation = [pan translationInView:self];
    if (self.contentOffset.y == 0 && panGestureTranslation.y > 0 ) {
        return NO;
    }
    return YES;
}

NO私が一番上に来ると戻りUIScrollView、ページ間の視差スクロール用の私の他の UIPanGesture が再び開始できるようにします。

私の問題は、私UIScrollViewがスクロールして一番上に達したときに、関数gestureRecognizerShouldBeginが呼び出されず、UIPanGestureRecognizer視差スクロールを許可する前にタッチを離さなければならないことです。

質問:画面から指を離さずにタッチ ハンドルを停止し、タッチを上に上げるにはUIScrollViewどうすればよいですか? UIPanGestureRecognizer(Year Walk Companion アプリのように)。

4

1 に答える 1

0

gestureRecognizerShouldBegin新しいタッチ「セッション」が開始されていないため、 は呼び出されません。既存のものはまだ進行中で、ジェスチャーは開始したくないと言っていました。

可能性を維持し、コンテンツ オフセットが 0 未満の場合にのみ開始する独自のジェスチャ サブクラスを作成することもできます。または、スクロール ビューのデリゲート メソッドを入力として使用し、ジェスチャをまったく使用しないこともできます。

于 2013-07-16T09:18:17.963 に答える