Fixes Error Log context menu appearing while scrolling

This commit is contained in:
nythepegasus
2024-05-06 20:14:03 -04:00
committed by ny
parent 16d13c430c
commit e2a5e263f4

View File

@@ -21,6 +21,13 @@ final class ErrorLogViewController: UITableViewController
private lazy var dataSource = self.makeDataSource() private lazy var dataSource = self.makeDataSource()
private var expandedErrorIDs = Set<NSManagedObjectID>() private var expandedErrorIDs = Set<NSManagedObjectID>()
private var isScrolling = false {
didSet {
guard self.isScrolling != oldValue else { return }
self.updateButtonInteractivity()
}
}
private lazy var timeFormatter: DateFormatter = { private lazy var timeFormatter: DateFormatter = {
let dateFormatter = DateFormatter() let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .none dateFormatter.dateStyle = .none
@@ -103,6 +110,7 @@ private extension ErrorLogViewController
]) ])
cell.menuButton.menu = menu cell.menuButton.menu = menu
cell.menuButton.showsMenuAsPrimaryAction = self.isScrolling ? false : true
} }
// Include errorDescriptionTextView's text in cell summary. // Include errorDescriptionTextView's text in cell summary.
@@ -331,3 +339,39 @@ extension ErrorLogViewController: QLPreviewControllerDataSource {
return fileURL as QLPreviewItem return fileURL as QLPreviewItem
} }
} }
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
}
}
}
}