【发布时间】:2022-06-10 22:37:25
【问题描述】:
我试图隐藏除copy 和两个原始菜单之外的文本菜单。
我使用以下代码来隐藏几乎所有内容...但不知何故,我无法隐藏 look up 和 share(以及 Spell 和 Speak,添加于 6 月 10 日)。
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == Selector(("_lookup:")) ||
action == Selector(("_share:"))
{
return false
} else if
action == #selector(UIResponderStandardEditActions.copy(_:)) ||
action == #selector(copyAll(_:)) ||
action == #selector(lookUpWord (_:))
{
return true
} else {
return false
}
}
我调试了代码并见证了当 lookup 和 share 进入 if 语句时函数确实返回 false。但是,不知何故,这并没有反映在菜单上。
如何确保禁用 look up、share、Spell 和 Speak?
-----更新----
修改为扩展 但不知何故仍然没有按照我想要的方式工作。菜单不反映此扩展中的代码...
extension UITextView {
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == Selector(("_lookup:")) ||
action == Selector(("_share:"))
{
return false
} else if
action == #selector(UIResponderStandardEditActions.copy(_:)) ||
action == #selector(ViewController.copyAll(_:)) ||
action == #selector(ViewController.lookUpWord (_:))
{
return true
} else {
return false
}
}
}
【问题讨论】:
-
你在哪里调用 canPerformAction?
-
我把这段代码放在
ViewController中,没有继承UITextView。我需要子类化吗? -
尝试把它放在 UITextView 的扩展中。
-
谢谢!我试着把它作为一个扩展。但不知何故仍然没有按照我想要的方式工作。菜单不反映此扩展中的代码。你能看看我编辑的问题,看看我哪里做得不对吗?
-
您只想排除查找和共享?
标签: swift menu uitextview