From 4db533b67ef64fec36d3018b64959bfd1c123637 Mon Sep 17 00:00:00 2001 From: taku Date: Fri, 10 Feb 2017 20:43:56 +0000 Subject: [PATCH 1/2] Disable auto-select by swiping MenuItem on standard mode (with centerItem is false) --- Pod/Classes/PagingMenuController.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Pod/Classes/PagingMenuController.swift b/Pod/Classes/PagingMenuController.swift index e8344a5f..a9ebb190 100644 --- a/Pod/Classes/PagingMenuController.swift +++ b/Pod/Classes/PagingMenuController.swift @@ -319,7 +319,10 @@ extension PagingMenuController: UIScrollViewDelegate { case let (scrollView, pagingViewController?, _) where scrollView.isEqual(pagingViewController.contentScrollView): nextPage = nextPageFromCurrentPosition case let (scrollView, _, menuView?) where scrollView.isEqual(menuView): - nextPage = nextPageFromCurrentPoint + switch menuOptions!.displayMode { + case .standard(_, let centerItem, _) where !centerItem: return + default: nextPage = nextPageFromCurrentPoint + } default: return } From ee4d873bf07ea24ade3a0ab494af78b0326623bf Mon Sep 17 00:00:00 2001 From: taku Date: Sun, 28 May 2017 07:32:07 +0100 Subject: [PATCH 2/2] Add isAutoSelectAtScrollEnd --- Pod/Classes/PagingMenuController.swift | 18 +++++++++--------- .../Protocols/MenuViewCustomizable.swift | 4 ++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Pod/Classes/PagingMenuController.swift b/Pod/Classes/PagingMenuController.swift index a9ebb190..b2a78113 100644 --- a/Pod/Classes/PagingMenuController.swift +++ b/Pod/Classes/PagingMenuController.swift @@ -313,16 +313,14 @@ 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): - switch menuOptions!.displayMode { - case .standard(_, let centerItem, _) where !centerItem: return - default: nextPage = nextPageFromCurrentPoint - } + case let (scrollView, _, menuView?, autoSelect) where scrollView.isEqual(menuView) && autoSelect: + nextPage = nextPageFromCurrentPoint default: return } @@ -334,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) }