私はカスタムのページャUIScrollView
のプロトタイプを構築していますが、そのコア機能は現在の/最上部のページをトップビュー境界を通過するとすぐに削除することです完全に見えなくなる)。これはscrollViewのデリゲートではかなり基本的なコードで正常に動作していますが、2番目の 'page'以降の連続スワイプは、scrollViewが次のページに素早くジャンプするというグリッチを引き起こします。これは、scrollViewが反対方向に動くまで続きます。UIScrollViewの躍動性(トップ 'ページを削除するとき)
ページとしてイメージカードのトランプカードイメージを使用しています。コアユーザーの機能は、これらのカードページをすばやくスワイプするため、非常に不快な/早い応答がUXにはありません。下のビデオを参照してくださいたとえば
:私のコードは次のとおりです。上記のコードで
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のpanGestureRecognizer
とscrollEnabled
をリセットするなど、さまざまな方法を試してみました。
ここをクリックしてください!