我需要禁用在web视图中选择文本时弹出的默认上下文菜单,而从javascript端处理此事件。
经过初步研究,我在RNCWebview.m
中添加了以下代码,
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
NSLog(@"From native side");
return NO;
}
然后传递一个CCD_ 2道具,我从那里渲染了我的组件。我在节点模块中提供了console.log,并将此对象作为webview 的道具
{"cacheEnabled": true, "javaScriptEnabled": true, "onSelection": [Function onSelection], "originWhitelist": ["http://*", "https://*"], "source": {"uri": "https://www.google.com"}, "style": {"height": 500}, "useSharedProcessPool": true}
但我不知道如何处理这个函数并从objective-c代码中调用它。但是,当我在网络视图中选择一些文本并且没有调用onSelection
道具时,上下文菜单仍然会显示。
我确信我遗漏了一些环节。请帮助
对于stop menuContext,您可以为onselect事件添加一个eventListener,以便在WebView组件的html代码中使用preventDefault,但onselect只能在输入和文本区域标记中使用。
我终于找到了解决方案。我修改了代码RNCWebView.m
和RNCWebViewManager.m
以阻止onSelection
事件,并通过实现以下代码。
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
return NO;
}
这禁用了web视图中的默认上下文菜单。然后,使用webview的injectJavascript
道具,我添加了一个事件侦听器来观察selectionChange
事件,并使用自定义函数对其进行响应。