Fix scrolling

This commit is contained in:
Ali 2021-09-28 15:42:12 +04:00
parent 53bdcd7ef7
commit e578479e7b
2 changed files with 14 additions and 11 deletions

View File

@ -4,7 +4,6 @@ import SwiftSignalKit
import UIKitRuntimeUtils import UIKitRuntimeUtils
import ObjCRuntimeUtils import ObjCRuntimeUtils
private let infiniteScrollSize: CGFloat = 10000.0
private let insertionAnimationDuration: Double = 0.4 private let insertionAnimationDuration: Double = 0.4
private struct VisibleHeaderNodeId: Hashable { private struct VisibleHeaderNodeId: Hashable {
@ -161,6 +160,8 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
private final var lastContentOffset: CGPoint = CGPoint() private final var lastContentOffset: CGPoint = CGPoint()
private final var lastContentOffsetTimestamp: CFAbsoluteTime = 0.0 private final var lastContentOffsetTimestamp: CFAbsoluteTime = 0.0
private final var ignoreScrollingEvents: Bool = false private final var ignoreScrollingEvents: Bool = false
private let infiniteScrollSize: CGFloat
private final var displayLink: CADisplayLink! private final var displayLink: CADisplayLink!
private final var needsAnimations = false private final var needsAnimations = false
@ -368,6 +369,8 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
self.transactionQueue = ListViewTransactionQueue() self.transactionQueue = ListViewTransactionQueue()
self.scroller = ListViewScroller() self.scroller = ListViewScroller()
self.infiniteScrollSize = 10000.0
super.init() super.init()
@ -837,13 +840,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
print("Scrolling delta: \(delta)") print("Scrolling delta: \(delta)")
} }
} }
self.previousDidScrollTimestamp = timestamp self.previousDidScrollTimestamp = timestamp*/
if let displayLink = self.scroller.getIvarValue("_scrollHeartbeat") as? CADisplayLink {
if #available(iOS 10.0, *) {
displayLink.preferredFramesPerSecond = 120
}
}*/
//CATransaction.begin() //CATransaction.begin()
//CATransaction.setDisableActions(true) //CATransaction.setDisableActions(true)
@ -871,7 +868,7 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
self.trackingOffset += -deltaY self.trackingOffset += -deltaY
} }
self.enqueueUpdateVisibleItems(synchronous: true) self.enqueueUpdateVisibleItems(synchronous: false)
var useScrollDynamics = false var useScrollDynamics = false
@ -1531,8 +1528,12 @@ open class ListView: ASDisplayNode, UIScrollViewAccessibilityDelegate, UIGesture
else else
{ {
self.scroller.contentSize = CGSize(width: self.visibleSize.width, height: infiniteScrollSize * 2.0) self.scroller.contentSize = CGSize(width: self.visibleSize.width, height: infiniteScrollSize * 2.0)
self.lastContentOffset = CGPoint(x: 0.0, y: infiniteScrollSize) if abs(self.scroller.contentOffset.y - infiniteScrollSize) > infiniteScrollSize / 2.0 {
self.scroller.contentOffset = self.lastContentOffset self.lastContentOffset = CGPoint(x: 0.0, y: infiniteScrollSize)
self.scroller.contentOffset = self.lastContentOffset
} else {
self.lastContentOffset = self.scroller.contentOffset
}
} }
self.ignoreScrollingEvents = wasIgnoringScrollingEvents self.ignoreScrollingEvents = wasIgnoringScrollingEvents
} }

View File

@ -109,6 +109,8 @@
} else { } else {
return nil; return nil;
} }
}
+ (NSArray<NSString *> * _Nonnull)getIvarList:(Class _Nonnull)classValue { + (NSArray<NSString *> * _Nonnull)getIvarList:(Class _Nonnull)classValue {
NSMutableArray<NSString *> *result = [[NSMutableArray alloc] init]; NSMutableArray<NSString *> *result = [[NSMutableArray alloc] init];