2017-02-28 6 views
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) 
       } 
      } 
     } 
    } 
} 

答えて

1

は、それが自動的に次または前のセルにスクロールする必要があります。

スクロールビューのisPagingEnabledtrueに設定してください。ページングのスクロールビューは、あなたが記述した内容を自動的にに変換します。

+0

AH!あなたはマットです! –

関連する問題