Ios 为什么shouldStartLoadWithRequest不在webview中加载my/amp版本,而在safari中加载?

Ios 为什么shouldStartLoadWithRequest不在webview中加载my/amp版本,而在safari中加载?,ios,objective-c,swift,webview,uiwebview,Ios,Objective C,Swift,Webview,Uiwebview,我有一个iOS应用程序,里面有一个UIWebView。 在我的网站中,我的所有页面都有一个/amp版本,即www.website-example.com/pageX/amp 在shouldStartLoadWithRequest:method中,I do:url=[url URLByAppendingPathComponent:@amp] 如果我执行[[UIApplication sharedApplication]openURL:url];返回false;因此,它会在Safari中打开url,

我有一个iOS应用程序,里面有一个UIWebView。 在我的网站中,我的所有页面都有一个/amp版本,即www.website-example.com/pageX/amp

在shouldStartLoadWithRequest:method中,I do:url=[url URLByAppendingPathComponent:@amp]

如果我执行[[UIApplication sharedApplication]openURL:url];返回false;因此,它会在Safari中打开url,并打开良好的/amp版本

否则,如果在附加/amp后返回false,它将在webview中打开url,而不会打开/amp版本,尽管url包含/amp

编辑:我添加了Swift标记,因为这不是编程语言问题,而是理解shouldStartLoadWithRequest方法


问题出在哪里?

您应该获得以下代码:

[webView loadRequest:[NSURLRequest requestWithURL:[NSString stringWithFormat:@"%@/amp", request.URL]]];
在方法中:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

这将对您有所帮助。

您应该获得以下代码:

[webView loadRequest:[NSURLRequest requestWithURL:[NSString stringWithFormat:@"%@/amp", request.URL]]];
在方法中:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

这将对您有所帮助。

您不能在shouldStartLoadWithRequest中向url追加/amp,必须添加/amp并将其传递给loadRequest方法。它在safari中可以正常打开,因为您传递的是好的url,但UIWebView在附加/amp之前打开url,而在shouldStartLoadWithRequest中,您不能操作url。

您不能在shouldStartLoadWithRequest中附加/amp,必须将/amp添加并传递到loadRequest方法。它在safari中可以正常打开,因为您传递的是正确的url,但UIWebView在附加/amp之前会打开url,而在shouldStartLoadWithRequest中,您无法操作url。

请粘贴一些相关代码。添加了所有必要的代码为什么没有人应答?没有人知道答案?请粘贴一些相关代码。添加了所有必要的代码为什么没有人回答?没有人知道答案吗?谢谢,但是你能解释一下为什么我应该在哪里添加这个吗?它不起作用。并发出警告-requestWithURL采用URL,而不是字符串。在此方法中,应加载AstartLoadWithRequest,加载此方法[webView loadRequest:[NSURLRequestRequestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@%@/amp,request.URL]];此方法“[[UIApplication sharedApplication]openURL:url];”总是在safari中打开。问题是为什么在safari中打开/amp,而在webview中不打开?你确定你明白这一点吗?你检查代码了吗?谢谢你的帮助谢谢,但是你能解释一下我为什么要加这个吗?它不起作用。并发出警告-requestWithURL采用URL,而不是字符串。在此方法中,应加载AstartLoadWithRequest,加载此方法[webView loadRequest:[NSURLRequestRequestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@%@/amp,request.URL]];此方法“[[UIApplication sharedApplication]openURL:url];”总是在safari中打开。问题是为什么在safari中打开/amp,而在webview中不打开?你确定你明白这一点吗?你检查代码了吗?谢谢你的帮助嘿,谢谢你的回答。那个么,我想怎么做呢?请编辑问题并将代码粘贴到loadRequest被称为Hey的地方,谢谢您的回答。那么,我想怎么做呢?请编辑问题并将代码粘贴到loadRequest调用的位置