1

我需要禁用默认上下文菜单,当在 react-native-webView 中选择一些文本时会弹出该菜单。

我分叉了库并添加了一个新的MyWebView.hMyWebView.m文件来尝试禁用选择操作。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    return NO;
}

然后在RNCWebView.m文件中,我进行了以下更改:

  1. implementationRNCWebView 块中,我将自定义 webview 实例化为

      @implementation RNCWebView
    
      {
         MJRWebView *_webView;
         (other code here)
      }
    
  2. 然后在里面initWithFrame,我正在做以下事情:
     - (instancetype)initWithFrame:(CGRect)frame
      {
         if ((self = [super initWithFrame:frame])) {
         super.backgroundColor = [UIColor clearColor];
         _webView = [[MJRWebView alloc] initWithFrame:self.bounds];
         (other props)
    

选择被禁用,但其他道具喜欢onMessageinjectJavascript停止工作。这是禁用上下文菜单的正确方法吗?

4

1 回答 1

0

RNCWebViewa WKUIDelegate,如下声明

@interface RNCWebView () <WKUIDelegate, ...

所以你只需要创建一个子类RNCWebView并添加以下唯一

- (void)webView:(WKWebView *)webView contextMenuConfigurationForElement:(WKContextMenuElementInfo *)elementInfo 
   completionHandler:(void (^)(UIContextMenuConfiguration * _Nullable configuration))completionHandler
{
   completionHandler(nil);
}

并使用您的子类。

于 2020-02-04T16:29:13.057 回答