我的应用中包含WKWebView
。在此应用中,我自定义了UIMenuController
中显示的选项。无论我做什么,Web视图似乎都会将复制和定义选项添加到菜单中。如果我将自己设置为第一响应者并为所有内容返回NO,我仍然可以复制并定义选项。而且我已经实现了自己的复制选项,根据用户的喜好和选择的内容做了特殊的事情。有没有办法删除这些额外的选项?
更新:我已将其作为雷达18487289提交。
答案 0 :(得分:1)
对于iOS 11,只需子类WKWebView
并覆盖canPerformAction
即可返回false
:
class WebView : WKWebView {
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
对于iOS 10或更早版本,调整WKContentView
的{{1}}方法:
canPerformAction
删除这些网页视图的内置菜单项后,您可以像往常一样通过@objc private extension UIResponder {
func swizzle_canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
guard let viewClass = NSClassFromString("WKContentView") as? UIView.Type else { return }
method_exchangeImplementations(
class_getInstanceMethod(viewClass, #selector(UIResponder.canPerformAction))!,
class_getInstanceMethod(UIResponder.self, #selector(UIResponder.swizzle_canPerformAction))!
)
添加自定义菜单项。
答案 1 :(得分:1)
此问题似乎已在iOS 13 beta 1中修复。