Skip to content

Commit 3510172

Browse files
committed
Added scrollview delegate when set pageview instance.
1 parent c33fa9b commit 3510172

1 file changed

Lines changed: 31 additions & 4 deletions

File tree

Source/PuiPageViewSegmentedControl.swift

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88

99
import 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+
1120
open 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

6373
extension 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

Comments
 (0)