Как правильно создать подкласс React native webview, чтобы отключить контекстное меню при выборе? - PullRequest
1 голос
/ 04 февраля 2020

Мне нужно отключить контекстное меню по умолчанию, которое появляется, когда какой-то текст выделен в реактиве-native-webView.

Я разветвил библиотеку и добавил новый MyWebView.h и MyWebView.m файлов, чтобы попытаться отключить действие выбора.

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

Затем внутри файла RNCWebView.m я внес следующие изменения:

  1. В блоке implementation RNCWebView я создал свой пользовательский веб-просмотр как

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

Выбор отключен, но другие реквизиты, такие как onMessage и injectJavascript перестали работать. Это правильный способ отключения контекстного меню?

1 Ответ

0 голосов
/ 04 февраля 2020

RNCWebView - это WKUIDelegate, как показано ниже из объявления

@interface RNCWebView () <WKUIDelegate, ...

, поэтому вам просто нужно создать подкласс RNCWebView и добавить только следующие

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

и используйте свой подкласс.

...