2016-05-05 1 views
0

私はカスタムのページャUIScrollViewのプロトタイプを構築していますが、そのコア機能は現在の/最上部のページをトップビュー境界を通過するとすぐに削除することです完全に見えなくなる)。これはscrollViewのデリゲートではかなり基本的なコードで正常に動作していますが、2番目の 'page'以降の連続スワイプは、scrollViewが次のページに素早くジャンプするというグリッチを引き起こします。これは、scrollViewが反対方向に動くまで続きます。UIScrollViewの躍動性(トップ 'ページを削除するとき)

ページとしてイメージカードのトランプカードイメージを使用しています。コアユーザーの機能は、これらのカードページをすばやくスワイプするため、非常に不快な/早い応答がUXにはありません。下のビデオを参照してくださいたとえば

(約10秒 - 言い訳リプレイ) enter image description here

私のコードは次のとおりです。上記のコードで

func scrollViewDidScroll(scrollView: UIScrollView) { 

     if (scrollView.contentOffset.y >= scrollView.frame.height) { 
      print("CATCH at \(scrollView.contentOffset.y)") 

      // Handle 'cards' UIImageView array directly 
      self.cards.first?.removeFromSuperview() 
      self.cards.removeFirst() 
      for cardImage in self.cards { 
       cardImage.frame = CGRectOffset(cardImage.frame, 0, -cardImage.frame.height) 
      } 

      // Resize the scrollView's contentView and coordinates 
      scrollView.contentSize = CGSizeMake(scrollView.frame.width, scrollView.contentSize.height - scrollView.frame.height) 
      scrollView.setContentOffset(CGPointMake(0, 0), animated: false) 

      print("new content offset: \(scrollView.contentOffset.y)") 
     } 
    } 

、 (すなわち非常に速くスクロールする)場合、contentOffset.yの 'CATCH'の値がビューの高さを超えています - 'スムーズ'の場合、 'CATCH'の値はまさにページの高さです(通常のページonアニメーション);したがって、あまりにも速く進むとビューが遅すぎると見なすことができます(?)

scrollViewの逆の方向に少し動かしてグリッチを止めると、scrollViewのアニメーションやそうするときに速度がリセットされます。

私はscrollViewDidEndDeceleratingデリゲートで、scrollViewのpanGestureRecognizerscrollEnabledをリセットするなど、さまざまな方法を試してみました。

ここをクリックしてください!

答えて

0

UIScrollViewDelegateの様々なデリゲートの機能を試して後、私はscrollViewが自然に(例えば、ページングscrollViewの次のページの終わりのように)停止した時点でscrollViewDidScrollを操作すると、このようないくつかの状況でscrollViewDidEndDecelerating(迂回することを発見しましたこのページのジャンプを引き起こしていたスクロールが再び開始されると、それを失火させます。

私のコードをscrollViewDidEndDeceleratingに移動し、「ライブ」スクロールイベントの編集を処理するのはscrollViewDidScrollでした。

関連する問題