Merge pull request #5484 from vector-im/andy/4524-fix-timeline-scroll

Scroll to the bottom of timeline automatically
This commit is contained in:
Anderas
2022-02-02 16:03:12 +00:00
committed by GitHub
2 changed files with 14 additions and 2 deletions
+13 -2
View File
@@ -215,6 +215,11 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
@property (nonatomic, readwrite) RoomDisplayConfiguration *displayConfiguration;
@property (nonatomic) AnalyticsScreenTimer *screenTimer;
// When layout of the screen changes (e.g. height), we no longer know whether
// to autoscroll to the bottom again or not. Instead we need to capture the
// scroll state just before the layout change, and restore it after the layout.
@property (nonatomic) BOOL shouldScrollToBottomAfterLayout;
@end
@implementation RoomViewController
@@ -650,6 +655,11 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
[self.screenTimer stop];
}
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
self.shouldScrollToBottomAfterLayout = self.isBubblesTableScrollViewAtTheBottom;
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
@@ -715,9 +725,10 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05;
self.edgesForExtendedLayout = UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight;
}
// stay at the bottom if already was
if (self.isBubblesTableScrollViewAtTheBottom)
// re-scroll to the bottom, if at bottom before the most recent layout
if (self.shouldScrollToBottomAfterLayout)
{
self.shouldScrollToBottomAfterLayout = NO;
[self scrollBubblesTableViewToBottomAnimated:NO];
}