【发布时间】:2021-08-20 20:01:35
【问题描述】:
我正在为react-native-webview 进行 PR 以将自定义菜单项添加到 RNCWebView(它是 WKWebView 的子类)。它的工作原理是它添加了附加选项,但“复制|查找|共享...”总是出现。即使canPerformAction 为每个操作返回NO(注意canPerformAction 不会为copy 返回true/YES)
我遇到过很多其他帖子,例如:
- WKWebView and UIMenuController
- Removing Copy, Look Up, and Share from UIMenuController
- Custom Cut, Copy & Paste operations for WKWebView
还有无数其他的只是建议使用 CSS 来隐藏整个菜单。我不想隐藏整个菜单,而只是“复制、查找和共享”,同时让我的自定义菜单在使用 WKWebView 时保留。
我的想法是,响应者链上还有其他一些类仍在将它们设置为 true,但我已尝试扩展和覆盖我所知道的尽可能多的选项,但这些选项仍然显示:
extension UIView {
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
extension UITextView {
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
extension UIImageView{
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
extension UIScrollView{
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
extension UISlider{
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
extension UIWebView{
open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
@objc private extension UIResponder {
func swizzle_canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return false
}
}
这些都不起作用。无论如何,这三个选项仍然出现。有谁知道哪个班级可以响应并添加这些选项?这似乎是一个常见问题,但我发现的所有帖子要么没有答案,要么完全过时。
【问题讨论】:
-
我可以删除复制、剪切、全选、粘贴项目。我认为您无法删除查找和共享项目。
-
显示您添加自定义
menuItems 的行。 -
@ElTomato 我在这里从这个包中将它们添加到 WebView:github.com/react-native-webview/react-native-webview/pull/2101/…
-
那我提交解决方案后怎么办?
标签: swift objective-c react-native wkwebview