diff --git a/Pod/Classes/PagingMenuController.swift b/Pod/Classes/PagingMenuController.swift index e8344a5f..b2a78113 100644 --- a/Pod/Classes/PagingMenuController.swift +++ b/Pod/Classes/PagingMenuController.swift @@ -313,12 +313,13 @@ open class PagingMenuController: UIViewController { extension PagingMenuController: UIScrollViewDelegate { public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { onMove?(.didScrollEnd) + guard let menuOptions = menuOptions else { return } let nextPage: Int - switch (scrollView, pagingViewController, menuView) { - case let (scrollView, pagingViewController?, _) where scrollView.isEqual(pagingViewController.contentScrollView): + switch (scrollView, pagingViewController, menuView, menuOptions.isAutoSelectAtScrollEnd) { + case let (scrollView, pagingViewController?, _, _) where scrollView.isEqual(pagingViewController.contentScrollView): nextPage = nextPageFromCurrentPosition - case let (scrollView, _, menuView?) where scrollView.isEqual(menuView): + case let (scrollView, _, menuView?, autoSelect) where scrollView.isEqual(menuView) && autoSelect: nextPage = nextPageFromCurrentPoint default: return } @@ -331,8 +332,10 @@ extension PagingMenuController: UIScrollViewDelegate { } public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { - switch (scrollView, decelerate) { - case (let scrollView, false) where scrollView.isEqual(menuView): break + guard let menuOptions = menuOptions else { return } + + switch (scrollView, decelerate, menuOptions.isAutoSelectAtScrollEnd) { + case (let scrollView, false, true) where scrollView.isEqual(menuView): break default: return } diff --git a/Pod/Classes/Protocols/MenuViewCustomizable.swift b/Pod/Classes/Protocols/MenuViewCustomizable.swift index 376006b0..250fa189 100644 --- a/Pod/Classes/Protocols/MenuViewCustomizable.swift +++ b/Pod/Classes/Protocols/MenuViewCustomizable.swift @@ -15,6 +15,7 @@ public protocol MenuViewCustomizable { var animationDuration: TimeInterval { get } var deceleratingRate: CGFloat { get } var selectedItemCenter: Bool { get } + var isAutoSelectAtScrollEnd: Bool { get } var displayMode: MenuDisplayMode { get } var focusMode: MenuFocusMode { get } var dummyItemViewsSet: Int { get } @@ -42,6 +43,9 @@ public extension MenuViewCustomizable { var selectedItemCenter: Bool { return true } + var isAutoSelectAtScrollEnd: Bool { + return true + } var displayMode: MenuDisplayMode { return .standard(widthMode: .flexible, centerItem: false, scrollingMode: .pagingEnabled) }