对于iOS 11,简单地继承WKWebView
并覆盖canPerformAction
回到false
:
class WebView : WKWebView {
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
对于iOS 10或更早,调酒WKContentView
的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))!
)
删除这些Web视图的内置菜单项后,可以像平常一样通过UIMenuController.shared
添加自定义菜单项。
我有同样的问题,有什么进展? – avdyushin 2015-06-08 12:21:57
@avdyushin no。但我在WWDC。本周要去问某人。 – 2015-06-08 16:04:12
@avdyushin这是一个已知的问题,但没有时间表。现在完整的解决方案是隐藏willShow上的菜单,并使用任何你想要的选项来制作和呈现你自己的菜单。 – 2015-06-15 14:49:14