Fix scrolling

This commit is contained in:
Ali 2021-09-28 15:42:12 +04:00
parent d68ef5b11b
commit bd7a43fe44
2 changed files with 25 additions and 11 deletions

View File

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

View File

@ -98,6 +98,19 @@
object_setClass(self, newClass);
}
- (NSNumber * _Nullable)floatValueForKeyPath:(NSString * _Nonnull)keyPath {
id value = [self valueForKeyPath:keyPath];
if (value != nil) {
if ([value respondsToSelector:@selector(floatValue)]) {
return @([value floatValue]);
} else {
return nil;
}
} else {
return nil;
}
}
+ (NSArray<NSString *> * _Nonnull)getIvarList:(Class _Nonnull)classValue {
NSMutableArray<NSString *> *result = [[NSMutableArray alloc] init];