每当用户选择任何文字时,我都要求在uiwebview上显示菜单项。
我试过了
let highlightMenuItem = UIMenuItem(title: "Highlight", action: #selector(ViewController.hightlight))
UIMenuController.sharedMenuController().menuItems = [highlightMenuItem]
但是这只会添加更多菜单项和默认的现有菜单项。就像这个
有没有办法实现这一点,只有菜单项目Copy,Highlight和Note?
答案 0 :(得分:12)
您可以通过继承UIWebView
并覆盖canPerformAction
(Swift 3)来实现此目的。然后,您需要做的就是返回false
以取消您想要禁用的任何操作。
示例:
class EditedUIMenuWebView: UIWebView {
override func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool {
if action == #selector(cut(_:)) {
return false
}
if action == #selector(paste(_:)) {
return false
}
if action == #selector(select(_:)) {
return false
}
if action == #selector(selectAll(_:)) {
return false
}
...
return super.canPerformAction(action, withSender: sender)
}
}
如果您有任何疑问,请询问!
修改如果您想要停用所有操作,只有少数可能更容易在false
中返回canPerformAction
并返回true
想要这样:
override func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool {
if action == #selector(copy(_:)) || action == #selector(customMethod(_:)) {
return true
}
...
return false
}