在哪里向 UIMenuController 添加自定义菜单项?

Posted

技术标签:

【中文标题】在哪里向 UIMenuController 添加自定义菜单项?【英文标题】:Where to add custom menu items to UIMenuController? 【发布时间】:2010-11-03 20:33:25 【问题描述】:

我创建了 UITextView 的子类,现在我想通过添加一些按钮来扩展默认的 UIMenuController。执行扩展一点问题都没有,我只需要添加一些UIMenuItem 这样UIMenuController 的共享实例的menuItems 数组即可。

我现在的问题是:我在哪里执行此操作? MenuController 是一个单例实现,所以我所做的每一次更改都会影响支持菜单的所有其他视图。那么我要在哪里添加额外的菜单项,以后又要在哪里删除它们呢?我正在寻找某种与 UIViewController 的 viewWillAppear 方法等效的方法。

还是我太担心了,在包含我的 UITextView 子类的视图的视图控制器中实现它是非常好的做法? 但是,这意味着每个包含我的类作为子视图的视图控制器都必须实现相同的代码。有没有更好的办法?

编辑:另一种选择当然是保持我的类的选择器唯一,并让所有其他自定义视图为-respondsToSelector: 中的选择器返回NO。这对我来说似乎是迄今为止最好的解决方案。

最佳做法是什么?

【问题讨论】:

【参考方案1】:

事实证明,在应用委托中添加项目可以正常工作。当然,您需要确保支持 MenuController 的其他视图为您在 -respondsToSelector: 中的特定选择器返回 NO

【讨论】:

【参考方案2】:

好问题。不确定最佳做法。

您可能想使用 viewDidAppear 和 viewWillDisappear 来修改它。

【讨论】:

以上是关于在哪里向 UIMenuController 添加自定义菜单项?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIMenuController

自定义 UIMenuController

无法让 UIMenuController 显示自定义项目

使用自定义 UIMenuController 项从 UIPasteboard 中复制和检索值

您如何真正从 UIMenuController 中删除 Copy

UIMenuController 在呈现后立即被解雇