【问题标题】:How to remove UIMenuController item in swift?如何快速删除 UIMenuController 项目?
【发布时间】:2018-12-23 15:21:38
【问题描述】:

我想删除 UIMenuController 项。

此文本字段不是 UITextField。

那个文本域是 UIWebView 的文本域。不是本地人拥有的。

我试过了。

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

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

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

我只想要“复制”按钮。我该怎么做??

【问题讨论】:

  • 所以 textView 不是 native 。它是 HTML

标签: swift uiwebview uimenucontroller


【解决方案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
        }
    }
}

【讨论】:

  • 我在 UIWebView 中使用。不是 WKWebView。如果没关系,我不会像你那样工作。所有菜单始终打开...
  • @allanWay,正是你所说的。 WKWebView 没问题。 UIWebView 和往常一样。
【解决方案2】:

您可以通过以下代码创建带有操作的自定义菜单项并分配给您 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()

输出:

希望对你有帮助。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2020-10-09
  • 1970-01-01
相关资源
最近更新 更多