0
ビューコントローラ全体を占めるセルで水平のtableViewを作成しました。デフォルト設定でスクロールする代わりに、scrollView.scrollToItem(at: IndexPath
メソッドを使用して次のセルにスクロールしたいと思います。スワイプで次/前のセルに自動スクロール
意味は、ユーザーが右にスクロールするたびに自動的に次のセルにスクロールし、左にスワイプするたびに前のセルにスクロールします。方向をスクロールすると、自動的に次または前のセルにスクロールする必要があります。
私はscrollViewDidScrollデリゲートメソッドを使って傍受しようとしましたが、私は多量の問題に遭遇しています。これは前後に自動スクロールして1トングリッチしています。私は間違って何をしていますか?あなたが方向をスクロールするたびに
var previousOffset: CGFloat = 0.0
var allowHorizontalScroll: Bool = true
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (allowHorizontalScroll){
let offset = scrollView.contentOffset.x
let diff = previousOffset - offset
previousOffset = offset
var currentBoardIndex = scrollView.indexPathForItem(at: CGPoint(x:offset, y:10))?.item
if currentBoardIndex != nil {
if diff > 0 {
//print("scroll left")
if (currentBoardIndex != 0){
currentBoardIndex = currentBoardIndex! - 1
allowHorizontalScroll = false
scrollView.scrollToItem(at: IndexPath(row: (currentBoardIndex!), section: 0), at: .left, animated: true)
}
}else{
//print("scroll right")
if (currentBoardIndex != ((boardVCDataSource?.fetchedResultsController.fetchedObjects?.count)! - 1)){
currentBoardIndex = currentBoardIndex! + 1
allowHorizontalScroll = false
scrollView.scrollToItem(at: IndexPath(row: (currentBoardIndex!), section: 0), at: .left, animated: true)
}
}
}
}
}
AH!あなたはマットです! –