如何快速删除UIMenuController项目?

时间:2018-07-16 06:23:48

标签: swift uiwebview uimenucontroller

我要删除UIMenuController项。

此文本字段不是UITextField。

该文本字段是UIWebView的文本字段。不是本地人。

我尝试了这个。

override func viewDidLoad() {
    super.viewDidLoad()
    ...
    UIMenuController.shared.isMenuVisible = false
}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return false
    }

但是结果总是一样的。如何删除UIMenuItem?

我只需要“复制”按钮。我该怎么办?

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用操作创建自定义菜单项,并通过以下代码将其分配给UIMenuViewController:

let menuCustom1 = UIMenuItem(title: "Custom 1", action: #selector(<MethodName>))
let menuCustom2 = UIMenuItem(title: "Custom 2", action: #selector(<MethodName>))
let menuCustom3 = UIMenuItem(title: "Custom 3", action: #selector(<MethodName>))

UIMenuController.shared.isMenuVisible = true
UIMenuController.shared.menuItems = [menuCustom1, menuCustom2, menuCustom3]
UIMenuController.shared.update()

输出:

UIMenuController custom items

我希望这会对您有所帮助。

答案 1 :(得分:1)

要在swift4中删除UIMenuController项,

class DNGWebView: WKWebView {
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
            return false
    }
}

作为Peter Stuart said:将显示菜单的视图(例如UITextView)子类化

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

为不想显示的菜单项返回false。

为了直观地说明它:

import WebKit

class DNGWebView: WKWebView {
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(copy(_:)){
            return true
        }
        else{
            return false
        }
    }
}

11