88
99import Foundation
1010
11+ public protocol PuiScrollViewSegmentedControlDelegate : NSObjectProtocol {
12+
13+ func scrollViewWillBeginDragging( _ scrollView: UIScrollView )
14+ func scrollViewDidScroll( _ scrollView: UIScrollView )
15+ func scrollViewDidEndDecelerating( _ scrollView: UIScrollView )
16+ func scrollViewDidEndDragging( _ scrollView: UIScrollView , willDecelerate decelerate: Bool )
17+
18+ }
19+
1120open class PuiPageViewSegmentedControl : PuiSegmentedControl {
1221
1322 // MARK: - Public Properties
@@ -26,6 +35,7 @@ open class PuiPageViewSegmentedControl: PuiSegmentedControl {
2635 }
2736 }
2837 }
38+ public weak var scrollViewDelegate : PuiScrollViewSegmentedControlDelegate ?
2939
3040 // MARK: - Private Properties
3141
@@ -62,11 +72,19 @@ extension PuiPageViewSegmentedControl: UIPageViewControllerDelegate {
6272
6373extension PuiPageViewSegmentedControl : UIScrollViewDelegate {
6474
65- public func scrollViewWillBeginDragging( _ scrollView: UIScrollView ) {
66- self . initialScrollViewPosition = scrollView. contentOffset. x
67- }
75+ public func scrollViewWillBeginDragging( _ scrollView: UIScrollView ) {
76+ // Call scrollview delegate
77+ self . scrollViewDelegate? . scrollViewWillBeginDragging ( scrollView)
78+
79+ // Set initial position
80+ self . initialScrollViewPosition = scrollView. contentOffset. x
81+ }
6882
6983 public func scrollViewDidScroll( _ scrollView: UIScrollView ) {
84+ // Call scrollview delegate
85+ self . scrollViewDelegate? . scrollViewDidScroll ( scrollView)
86+
87+ // Check content offset
7088 if self . initialScrollViewPosition == scrollView. contentOffset. x {
7189 return
7290 }
@@ -78,5 +96,14 @@ extension PuiPageViewSegmentedControl: UIScrollViewDelegate {
7896 // Call super method
7997 self . scrollSegmentedControl ( ratio: ratio)
8098 }
81-
99+
100+ public func scrollViewDidEndDecelerating( _ scrollView: UIScrollView ) {
101+ // Call scrollview delegate
102+ self . scrollViewDelegate? . scrollViewDidEndDecelerating ( scrollView)
103+ }
104+
105+ public func scrollViewDidEndDragging( _ scrollView: UIScrollView , willDecelerate decelerate: Bool ) {
106+ // Call scrollview delegate
107+ self . scrollViewDelegate? . scrollViewDidEndDragging ( scrollView, willDecelerate: decelerate)
108+ }
82109}
0 commit comments