WKWebView and UIMenuController

后端 未结 2 1926
后悔当初
后悔当初 2020-12-10 05:42

I have an app with a WKWebView in it. In this app, I customize the options presented in the UIMenuController. The web view seems to add Copy and

相关标签:
2条回答
  • 2020-12-10 05:52

    For iOS 11, simply subclass WKWebView and override canPerformAction to return false:

    class WebView : WKWebView {
        override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
            return false
        }
    }
    

    For iOS 10 or earlier, swizzle WKContentView's canPerformAction method:

    @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))!
    )
    

    After remove those web view's build-in menu items, you can add your custom menu items via UIMenuController.shared like normal.

    0 讨论(0)
  • 2020-12-10 06:05

    This appears to be fixed in iOS 13 beta 1.

    0 讨论(0)
提交回复
热议问题