我有一个UIWebView
加载一个HTML页面,其中包含一些指向App Store的链接(<a herf="http://itunes/bla/bla/bla">
类型的链接(。
单击链接,打开外部 Safari,然后打开外部 App Store 应用程序并成功转到正确的页面。
如果您随后单击主页按钮并返回跳板并再次单击应用程序,它将短暂打开显示UIWebView
,然后再次跳转到外部 Safari 和外部 App Store 应用程序。
如果您再次返回应用程序,它将保留在应用程序中。
因此,正在发生的事情是从HTML页面打开外部浏览器链接后返回应用程序UIWebView
然后再次跳回到同一链接。
有人知道是什么原因造成的吗?
我使用的是Xcode 4.2.1,它发生在模拟器和实际设备(iPad 1和iOS 4.3(上。
编辑 - 解决方案:
好的,这是我解决问题所必须做的事情(感谢 Ben 在下面的回复,他让我看到了正确的区域(:
这是我最初的方法:
- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (didLoad) { //Do not jump to URL when view first loads
return YES;
}
[[UIApplication sharedApplication] openURL:[request URL]];
return YES;
}
这是我的固定方法,不会一直跳转到 URL:
- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (didShowURL) { //Do not jump to URL when returning to app
didShowURL = 0;
return NO;
}
if (didLoad) { //Do not jump to URL when view first loads
return YES;
}
didShowURL = 1;
[[UIApplication sharedApplication] openURL:[request URL]];
return YES;
}
我建议为您的链接使用 itms-apps://
协议。 这会将用户直接发送到App Store中的应用程序,而无需重定向。
NSURL *appStoreLink = [NSURL URLWithString:@"itms-apps://itunes.apple.com/us/app/instagram/id389801252?mt=8"];
[[UIApplication sharedApplication] openURL:appStoreLink];
您的 Web 视图正在重新加载到其最后一页(应用商店页面(,并再次自动将用户重定向。您只需要确保在重新加载应用程序时,它不会尝试再次加载应用商店链接。
根据您的应用设置,您可以使用
viewWillAppear
并在每次将视图置于前面时重新加载带有链接的原始 HTML 页面。