Currently, I have no issue in showing context menu in UICollectionView, via long press.
extension BackupViewController: UICollectionViewDelegate {
// Long press, to show context menu.
func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
configureContextMenu(index: indexPath.row)
}
func configureContextMenu(index: Int) -> UIContextMenuConfiguration{
let context = UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { (action) -> UIMenu? in
let edit = UIAction(title: "Edit", image: UIImage(systemName: "square.and.pencil"), identifier: nil, discoverabilityTitle: nil, state: .off) { (_) in
print("edit button clicked")
//add tasks...
}
let delete = UIAction(title: "Delete", image: UIImage(systemName: "trash"), identifier: nil, discoverabilityTitle: nil,attributes: .destructive, state: .off) { (_) in
print("delete button clicked")
//add tasks...
}
return UIMenu(title: "Options", image: nil, identifier: nil, options: UIMenu.Options.displayInline, children: [edit,delete])
}
return context
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// TODO: How to show the same long press context menu, via single tap?
}
}
Now, I would like to show the context menu, when user performs single tap on the cell.
May I know, how can I achieve so?
If that is not something possible/ straightforward, is there any workaround to achieve so?
Thanks.