remove viewFromTag lookup
This commit is contained in:
@@ -5,8 +5,9 @@ public class ExpoScrollForwarderModule: Module {
|
|||||||
Name("ExpoScrollForwarder")
|
Name("ExpoScrollForwarder")
|
||||||
|
|
||||||
View(ExpoScrollForwarderView.self) {
|
View(ExpoScrollForwarderView.self) {
|
||||||
Prop("scrollViewTag") { (view: ExpoScrollForwarderView, prop: Int) in
|
// Still calling this scrollViewTag even though it is being converted to RCTScrollView
|
||||||
view.scrollViewTag = prop
|
Prop("scrollViewTag") { (view: ExpoScrollForwarderView, prop: RCTScrollView) in
|
||||||
|
view.rctScrollView = prop
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import ExpoModulesCore
|
import ExpoModulesCore
|
||||||
|
|
||||||
// This view will be used as a native component. Make sure to inherit from `ExpoView`
|
|
||||||
// to apply the proper styling (e.g. border radius and shadows).
|
|
||||||
class ExpoScrollForwarderView: ExpoView, UIGestureRecognizerDelegate {
|
class ExpoScrollForwarderView: ExpoView, UIGestureRecognizerDelegate {
|
||||||
var scrollViewTag: Int? {
|
var rctScrollView: RCTScrollView? {
|
||||||
|
willSet {
|
||||||
|
self.removeCancelGestureRecognizers()
|
||||||
|
}
|
||||||
didSet {
|
didSet {
|
||||||
self.tryFindScrollView()
|
self.rctRefreshCtrl = self.rctScrollView?.scrollView.refreshControl as? RCTRefreshControl
|
||||||
|
self.addCancelGestureRecognizers()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var rctScrollView: RCTScrollView?
|
|
||||||
private var rctRefreshCtrl: RCTRefreshControl?
|
private var rctRefreshCtrl: RCTRefreshControl?
|
||||||
private var cancelGestureRecognizers: [UIGestureRecognizer]?
|
private var cancelGestureRecognizers: [UIGestureRecognizer]?
|
||||||
private var animTimer: Timer?
|
private var animTimer: Timer?
|
||||||
@@ -162,22 +162,6 @@ class ExpoScrollForwarderView: ExpoView, UIGestureRecognizerDelegate {
|
|||||||
return offset
|
return offset
|
||||||
}
|
}
|
||||||
|
|
||||||
func tryFindScrollView() {
|
|
||||||
guard let scrollViewTag = scrollViewTag else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Before we switch to a different scrollview, we always want to remove the cancel gesture recognizer.
|
|
||||||
// Otherwise we might end up with duplicates when we switch back to that scrollview.
|
|
||||||
self.removeCancelGestureRecognizers()
|
|
||||||
|
|
||||||
self.rctScrollView = self.appContext?
|
|
||||||
.findView(withTag: scrollViewTag, ofType: RCTScrollView.self)
|
|
||||||
self.rctRefreshCtrl = self.rctScrollView?.scrollView.refreshControl as? RCTRefreshControl
|
|
||||||
|
|
||||||
self.addCancelGestureRecognizers()
|
|
||||||
}
|
|
||||||
|
|
||||||
func addCancelGestureRecognizers() {
|
func addCancelGestureRecognizers() {
|
||||||
self.cancelGestureRecognizers?.forEach { r in
|
self.cancelGestureRecognizers?.forEach { r in
|
||||||
self.rctScrollView?.scrollView?.addGestureRecognizer(r)
|
self.rctScrollView?.scrollView?.addGestureRecognizer(r)
|
||||||
|
|||||||
Reference in New Issue
Block a user