Ios 在哪里重写shouldStartLoadWithRequest方法?

Ios 在哪里重写shouldStartLoadWithRequest方法?,ios,cordova,Ios,Cordova,我最近更新到cordova 6.0。在MainViewController中的代码中,我实现了shouldStartLoadWithRequestUIWebViewDelegate方法来执行一些基本过滤。现在在6.0中,情况发生了变化。整个url处理是在内部完成的(私有文件夹中的类),我不想更改它们,因为它将在下次更新时中断。 那么,在我的项目代码中,告诉cordova允许或不允许特定请求的位置在哪里呢?您可以使用本机cordova。您可以通过扩展CDVViewController来创建控制器,

我最近更新到cordova 6.0。在MainViewController中的代码中,我实现了shouldStartLoadWithRequestUIWebViewDelegate方法来执行一些基本过滤。现在在6.0中,情况发生了变化。整个url处理是在内部完成的(私有文件夹中的类),我不想更改它们,因为它将在下次更新时中断。
那么,在我的项目代码中,告诉cordova允许或不允许特定请求的位置在哪里呢?

您可以使用本机cordova。

您可以通过扩展CDVViewController来创建控制器,并实现UIWebViewDelegate接口。Cordova将调用您的委托方法,并根据返回值继续

@界面主视图控制器:CDVViewController


@结束

在深入研究cordova代码并进行了一些调试之后,我找到了一种保持cordova代码不变并拦截请求的方法。在处理请求时,Cordova检查所有响应请求的插件

- (BOOL)shouldOverrideLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType

根据返回值,允许或阻止请求。因此,我创建了一个只有该方法的小插件,如果请求应该像往常一样由cordova处理,则返回
YES
,或者
NO
以阻止请求并进行自己的处理。

谢谢,据我所知,它只允许或不允许某些请求,但不允许自己处理。是的。你可以从科尔多瓦处理,为什么不?但是怎么办?例如,我如何拦截指向http地址的链接并在代码中进行自己的处理?@Gamadril-您是否能够覆盖webview委托?怎样才能做到呢?谢谢你的回答。我曾尝试实现UIWebViewDelegate,但此后外部站点将不再启动。您知道如何解决此问题吗?如何将您创建的插件添加到插件对象中,使其响应并返回YES?这是一个常见的cordova插件,请遵循该指南:确保已定义为在conifg.xml中自动加载感谢@Gamadril。我按照你说的执行,可以覆盖委托。但是,它没有webview对象。你为此做了什么?因为你的插件扩展了CDVPlugin,你应该能够从self.webView获得UIWebview