如何在 UIviewController 子类中禁用 UIMenuControll(剪切、复制、粘贴、全选、删除)?

Posted

技术标签:

【中文标题】如何在 UIviewController 子类中禁用 UIMenuControll(剪切、复制、粘贴、全选、删除)?【英文标题】:how to disable UIMenuControll (cut,copy,paste,select all,delete) in UIviewController subclass? 【发布时间】:2013-05-09 13:56:06 【问题描述】:

我已经实现了很多方法,但粘贴并没有隐藏。我正在使用 Xcode 版本 4.5.2

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    if (menuController) 
        [UIMenuController sharedMenuController].menuVisible = NO;

    
    return NO;  

每种方法似乎都对我不起作用。有人可以帮我吗?提前致谢

【问题讨论】:

尝试对您的网点进行子类化 - 查看我的 UITextFields 示例***.com/a/14582785/1702413 【参考方案1】:

您需要执行这些操作来启用/禁用 UIMenuController 项。

    要显示/隐藏 UIMenuController 项,您的视图或视图控制器需要实现 canBecomeFirstResponder(显示/隐藏返回 YES/NO)。

    您还可以实现 UIResponder 的 canPerformAction:withSender: 方法,以根据上下文禁用或启用用户界面命令复制、选择、全选、粘贴等。

    或者您可以覆盖UIMenuControllerUpdate 方法来处理单个项目的自定义行为。例如,如果粘贴板不包含兼容类型的数据,则Paste 命令将被禁用。因此,您可以通过覆盖此方法来强制显示/隐藏粘贴菜单项。

【讨论】:

【参考方案2】:

您可以试试这个:在控制器的viewDidLoad 方法中,将其设置为不可见。

[[UIMenuController sharedMenuController] setMenuVisible:NO];

如果这不起作用,我猜你不走运,因为它是系统的一部分。我看到的唯一方法是禁用用户交互与可能触发上下文菜单的对象。

【讨论】:

以上是关于如何在 UIviewController 子类中禁用 UIMenuControll(剪切、复制、粘贴、全选、删除)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在子类中调用 UIViewController 的函数?

如何从 UIView 子类调用 UIViewController?

如何通过将类名传递给方法来创建子类 UIViewController?

如何在 swift 中使用 .xib 创建 UIViewController 子类?

如何在 UIviewController 子类中禁用 UIMenuControll(剪切、复制、粘贴、全选、删除)?

如何向作为 UIViewController 子类的 parentViewController 发送消息?