Skip to content

Commit 5c12b17

Browse files
authored
Merge pull request #37 from zipme/develop
Update scrollViewDefaultInsets
2 parents 2e6b29e + f5980ce commit 5c12b17

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

PullToRefresh/PullToRefresh.swift

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class PullToRefresh: NSObject {
2626
let refreshView: UIView
2727
var action: (() -> ())?
2828

29-
var observes = false
29+
private var isObserving = false
3030

3131
private let animator: RefreshViewAnimator
3232

@@ -91,6 +91,7 @@ public class PullToRefresh: NSObject {
9191

9292
private var KVOContext = "PullToRefreshKVOContext"
9393
private let contentOffsetKeyPath = "contentOffset"
94+
private let contentInsetKeyPath = "contentInset"
9495
private let contentSizeKeyPath = "contentSize"
9596
private var previousScrollViewOffset: CGPoint = CGPointZero
9697

@@ -127,6 +128,11 @@ public class PullToRefresh: NSObject {
127128
if case .Bottom = position {
128129
refreshView.frame = CGRect(x: 0, y: scrollView!.contentSize.height, width: scrollView!.bounds.width, height: refreshView.bounds.height)
129130
}
131+
} else if (context == &KVOContext && keyPath == contentInsetKeyPath && object as? UIScrollView == scrollView) {
132+
if self.state == .Initial {
133+
scrollViewDefaultInsets = scrollView!.contentInset
134+
}
135+
130136
} else {
131137
super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
132138
}
@@ -135,21 +141,27 @@ public class PullToRefresh: NSObject {
135141
}
136142

137143
private func addScrollViewObserving() {
138-
guard let scrollView = scrollView where !observes else {
144+
guard let scrollView = scrollView where !isObserving else {
139145
return
140146
}
141147

142148
scrollView.addObserver(self, forKeyPath: contentOffsetKeyPath, options: .Initial, context: &KVOContext)
143149
scrollView.addObserver(self, forKeyPath: contentSizeKeyPath, options: .Initial, context: &KVOContext)
150+
scrollView.addObserver(self, forKeyPath: contentInsetKeyPath, options: .New, context: &KVOContext)
151+
152+
isObserving = true
144153
}
145154

146155
private func removeScrollViewObserving() {
147-
guard let scrollView = scrollView where observes else {
156+
guard let scrollView = scrollView where isObserving else {
148157
return
149158
}
150159

151160
scrollView.removeObserver(self, forKeyPath: contentOffsetKeyPath, context: &KVOContext)
152161
scrollView.removeObserver(self, forKeyPath: contentSizeKeyPath, context: &KVOContext)
162+
scrollView.removeObserver(self, forKeyPath: contentInsetKeyPath, context: &KVOContext)
163+
164+
isObserving = false
153165
}
154166
}
155167

0 commit comments

Comments
 (0)