Catalyst - 以编程方式打开上下文菜单

Posted

技术标签:

【中文标题】Catalyst - 以编程方式打开上下文菜单【英文标题】:Catalyst - Opening context menu programmatically 【发布时间】:2020-05-05 15:50:01 【问题描述】:

我正在使用催化剂应用程序中的上下文菜单

let interaction = UIContextMenuInteraction(delegate: self)
editButton.addInteraction(interaction)

这在 Mac 上运行良好,并且当用户使用鼠标右键单击时会打开菜单。

另一方面,在某些情况下,我需要在普通按钮上打开相同的菜单,尤其是当用户在 iPad 上使用该应用程序时。有什么方法可以在普通按钮单击/点击事件中打开相同的上下文菜单?

【问题讨论】:

3D Touch 和长按手势的默认行为有什么问题? 在催化剂应用程序上,我需要通过正常点击打开菜单,尤其是在应用程序的 mac 版本上。 3D touch 在 Mac 上并不总是可用 【参考方案1】:

好吧,官方文档明确指出UIContextMenuInteraction 自己处理用户交互,因此没有官方方法可以改变这一点,至少目前是这样 - 我们只提供内容,其他一切都在后面场景。

来自developer.apple.com

声明

class UIContextMenuInteraction : NSObject

概述

使用 UIContextMenuInteraction 对象将用户的注意力集中在内容的特定部分,并为用户提供在该内容上执行的操作。 上下文菜单交互对象跟踪支持 3D Touch 的设备上的 Force Touch 手势,以及不支持它的设备上的长按手势。当出现适当的手势时,此对象会将您的内容动画化到一个新界面并显示您提供的上下文菜单。 UIKit 管理所有与菜单相关的交互并将所选操作(如果有)报告回您的应用程序。

【讨论】:

以上是关于Catalyst - 以编程方式打开上下文菜单的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加 MahApps.Metro 上下文菜单

如何以编程方式关闭 UIWebView 的上下文菜单?

以编程方式卸载浏览器外的 silverlight 应用程序

如何知道单击了哪个视图以打开上下文菜单?

从Visual Studio代码源代码控制窗格上下文菜单中提供“打开文件”命令

使 C++ 应用程序“以...打开”