ios 上下文菜单未出现在具有按钮的TableView单元格中

lokaqttq  于 2023-10-21  发布在  iOS
关注(0)|答案(1)|浏览(117)

我已经使用表视图单元格委托方法在RollableViewCell中实现了一个上下文菜单

func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration?
func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview?
func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview?

在我的表视图单元格中,有一个按钮。通常长按单元格会触发上下文菜单的出现。但是,如果用户长按按钮或按钮的容器,则不会显示上下文菜单,而是触发按钮的操作。
为了解决这个问题,我禁用了按钮并添加了一个点击手势。这一修改允许上下文菜单在长按时出现,并且常规的点击/单击手势按预期工作。
我有点好奇为什么表视图不能自动处理这种情况&是否有更优雅的解决方案来解决这个问题。

zzzyeukh

zzzyeukh1#

在界面生成器中关闭按钮和按钮容器上的“启用用户交互”。然后它应该会显示你的上下文菜单。
下面是您必须实现的示例代码:

func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
        let provider: UIContextMenuActionProvider = { _ in
            UIMenu(title: "Title", children: [
                UIAction(title: "Copy") { _ in
                    // do copy
                },
                UIAction(title: "Cut") { _ in
                    // do cut
                }
            ])
        }
        
        return UIContextMenuConfiguration(identifier: nil, previewProvider: nil, actionProvider: provider)
    }

相关问题