WKWebView和UIMenuController

时间:2014-09-25 19:00:32

标签: ios ios8 uimenucontroller wkwebview

我的应用中包含WKWebView。在此应用中,我自定义了UIMenuController中显示的选项。无论我做什么,Web视图似乎都会将复制和定义选项添加到菜单中。如果我将自己设置为第一响应者并为所有内容返回NO,我仍然可以复制并定义选项。而且我已经实现了自己的复制选项,根据用户的喜好和选择的内容做了特殊的事情。有没有办法删除这些额外的选项?

更新:我已将其作为雷达18487289提交。

2 个答案:

答案 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中修复。