如何从 iOS 的 UIMenuController 中删除默认的 UIMenuItem?

Posted

技术标签:

【中文标题】如何从 iOS 的 UIMenuController 中删除默认的 UIMenuItem?【英文标题】:How to remove the default UIMenuItem from the UIMenuController in iOS? 【发布时间】:2011-05-20 16:08:11 【问题描述】:

我想从 UIMenuController 中删除一些默认的 UIMenuItem 对象,例如“剪切”、“复制”等。

怎么做?

谢谢。

【问题讨论】:

【参考方案1】:

子类化呈现菜单的视图(例如UIWebViewUITextView)并覆盖-canPerformAction:withSender: 以返回NO 用于您不想出现的菜单项。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
    if (action == @selector(copy:)) 
        return NO;
    
    else 
        return [super canPerformAction:action withSender:sender];
    

【讨论】:

你是如何去掉粘贴选项的?我对粘贴进行了同样的尝试,但它出现了。我猜是因为粘贴板已经有一些内容了..【参考方案2】:
class TextView: UITextView 
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool 
        if action == #selector(copy(_:))
            return true
        
        else
            return false
        
    

在 Swift 4 中,

正如彼得斯图尔特所说: 子类化呈现菜单的视图(例如 UITextView)

然后override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool

为您不想出现的菜单项返回 false。

【讨论】:

以上是关于如何从 iOS 的 UIMenuController 中删除默认的 UIMenuItem?的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行获取设备的 iOS 版本?

如何从 iOS 屏幕获取文本内容?

如何从iOS设备转移音乐文件

如何从 Xamarin.iOS 中的 iOS 扩展调用 NSUserDefaults Observer

iOS:如何从 UIViewController 通知 appDelegate

如何从 iOS 中的不同来源获取位置?