Fixes Error Log context menu appearing while scrolling table view

This commit is contained in:
Riley Testut
2022-10-26 17:25:21 -05:00
parent 915dd83015
commit 41db3e42ce

View File

@@ -19,6 +19,13 @@ class ErrorLogViewController: UITableViewController
private lazy var dataSource = self.makeDataSource()
private var expandedErrorIDs = Set<NSManagedObjectID>()
private var isScrolling = false {
didSet {
guard self.isScrolling != oldValue else { return }
self.updateButtonInteractivity()
}
}
private lazy var timeFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .none
@@ -106,6 +113,15 @@ private extension ErrorLogViewController
])
cell.menuButton.menu = menu
if self.isScrolling
{
cell.menuButton.showsMenuAsPrimaryAction = false
}
else
{
cell.menuButton.showsMenuAsPrimaryAction = true
}
}
// Include errorDescriptionTextView's text in cell summary.
@@ -315,3 +331,39 @@ extension ErrorLogViewController
}
}
}
extension ErrorLogViewController
{
override func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
{
self.isScrolling = true
}
override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
{
self.isScrolling = false
}
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
{
guard !decelerate else { return }
self.isScrolling = false
}
private func updateButtonInteractivity()
{
guard #available(iOS 14, *) else { return }
for case let cell as ErrorLogTableViewCell in self.tableView.visibleCells
{
if self.isScrolling
{
cell.menuButton.showsMenuAsPrimaryAction = false
}
else
{
cell.menuButton.showsMenuAsPrimaryAction = true
}
}
}
}