diff --git a/WordPress/Classes/Utility/WPTableViewHandler.h b/WordPress/Classes/Utility/WPTableViewHandler.h index f86fe1f800eb..252062620d2e 100644 --- a/WordPress/Classes/Utility/WPTableViewHandler.h +++ b/WordPress/Classes/Utility/WPTableViewHandler.h @@ -106,6 +106,7 @@ @property (nonatomic) UITableViewRowAnimation moveRowAnimation; @property (nonatomic) UITableViewRowAnimation sectionRowAnimation; @property (nonatomic) BOOL listensForContentChanges; +@property (nonatomic) BOOL disableAnimations; - (nonnull instancetype)initWithTableView:(nonnull UITableView *)tableView; - (void)clearCachedRowHeights; diff --git a/WordPress/Classes/Utility/WPTableViewHandler.m b/WordPress/Classes/Utility/WPTableViewHandler.m index 9c0554be482a..0a38306f90a8 100644 --- a/WordPress/Classes/Utility/WPTableViewHandler.m +++ b/WordPress/Classes/Utility/WPTableViewHandler.m @@ -635,6 +635,9 @@ - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller } self.indexPathSelectedBeforeUpdates = [self.tableView indexPathForSelectedRow]; + if (self.disableAnimations) { + [UIView setAnimationsEnabled:NO]; + } [self.tableView beginUpdates]; } @@ -645,6 +648,9 @@ - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller NSError *error; [WPException objcTryBlock:^{ [self.tableView endUpdates]; + if (self.disableAnimations) { + [UIView setAnimationsEnabled:YES]; + } } error:&error]; if (error) { @@ -697,7 +703,7 @@ - (void)controller:(NSFetchedResultsController *)controller // It seems in some cases newIndexPath can be nil for updates newIndexPath = indexPath; } - + switch(type) { case NSFetchedResultsChangeInsert: { diff --git a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderTableContent.swift b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderTableContent.swift index c5525b89fbcd..4fc3a6de63ff 100644 --- a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderTableContent.swift +++ b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderTableContent.swift @@ -6,10 +6,14 @@ final class ReaderTableContent { private var tableViewHandler: WPTableViewHandler? func initializeContent(tableView: UITableView, delegate: WPTableViewHandlerDelegate) { - tableViewHandler = WPTableViewHandler(tableView: tableView) - tableViewHandler?.cacheRowHeights = false - tableViewHandler?.updateRowAnimation = .none - tableViewHandler?.delegate = delegate + let tableViewHandler = WPTableViewHandler(tableView: tableView) + tableViewHandler.cacheRowHeights = false + tableViewHandler.updateRowAnimation = .none + tableViewHandler.moveRowAnimation = .none + tableViewHandler.insertRowAnimation = .none + tableViewHandler.disableAnimations = true + tableViewHandler.delegate = delegate + self.tableViewHandler = tableViewHandler } func resetResultsController() {