From 95eaa2c3bb0cf626db5ca9729c7b3276d86002cb Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 31 Aug 2017 15:15:44 -0400 Subject: [PATCH] Preserve scroll state across conversation view layout changes, if possible. // FREEBIE --- .../ConversationView/MessagesViewController.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m index 1b7806e1c..2c97a138c 100644 --- a/Signal/src/ViewControllers/ConversationView/MessagesViewController.m +++ b/Signal/src/ViewControllers/ConversationView/MessagesViewController.m @@ -4501,6 +4501,11 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) { { OWSAssert([NSThread isMainThread]); + // JSQMessageView has glitchy behavior. When presenting/dismissing view + // controllers, the size of the input toolbar and/or collection view can + // repeatedly change, leaving scroll state in an invalid state. The + // simplest fix that covers most cases is to ensure that we remain + // "scrolled to bottom" across these changes. if (self.wasScrolledToBottomBeforeLayoutChange) { [self scrollToBottomImmediately]; }