Scroll to the bottom of timeline automatically, fixes #4524

Signed-off-by: Andy Uhnak <andyuhnak@gmail.com>
This commit is contained in:
Andy Uhnak
2022-02-02 12:45:00 +00:00
parent 22f72fdf28
commit d5ce90b3d9
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];
}