UIContextMenu не отображается, когда UITableViewCell также содержит UIButton
Я создаю простое приложение со списком, и в UITableViewCell есть кнопка с галочкой вместе с заголовком. При нажатии кнопки с галочкой статус «Готово» изменяется, а пользовательский интерфейс ячейки обновляется.
Я также хотел бы использовать жест длительного нажатия в UITableViewCell, чтобы появилось ContextMenu. Кажется, все работает, однако, когда пользователь долго нажимает кнопку с галочкой, ContextMenu не появляется.
Я предполагаю, что есть конкурирующие жесты (например, UIButton и длительное нажатие ячейки), но мне трудно понять, как поддерживать оба одновременно. Я создал тестовый код ниже, чтобы упростить проблему. В раскадровке ячейка имеет одну кнопку. При длительном нажатии не появляется контекстное меню (как мне и нужно).
Я знаю, что где-то есть решение!
class TableViewController: UITableViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return tableView.dequeueReusableCell(withIdentifier: "cellTest", for: indexPath)
}
override func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
let actions = [UIAction(title: "Delete", image: UIImage(systemName: "trash"), attributes: .destructive, handler: { action in
return
})]
return UIContextMenuConfiguration(actionProvider: { _ in
return UIMenu(options: .displayInline, children: actions)
})
}
}