我发现这个线程与我的问题相匹配:Clicking a link in UIWebView pushes on the NavigationView stack
但是,以下情况有所不同: 我没有使用导航控制器,而是使用基于视图的应用程序在按下相应按钮时手动切换到不同的视图控制器。我没有使用链接,而是使用 onClick 方法来检测用户何时单击 UIWebView 上的某些内容并尝试使用新的 UIWebView 打开新的 ViewController。
相同的代码会起作用还是我必须进行一些更改?
我发现这个线程与我的问题相匹配:Clicking a link in UIWebView pushes on the NavigationView stack
但是,以下情况有所不同: 我没有使用导航控制器,而是使用基于视图的应用程序在按下相应按钮时手动切换到不同的视图控制器。我没有使用链接,而是使用 onClick 方法来检测用户何时单击 UIWebView 上的某些内容并尝试使用新的 UIWebView 打开新的 ViewController。
相同的代码会起作用还是我必须进行一些更改?
你将不得不做一些修改
第一个:当 时onClick,您必须将当前页面重定向到新位置 例如,此位置将是MYLocation://GoThere
第二:更新shouldStartLoadWithRequest
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
//Check if special link
if ( [ urlString isEqualToString: @"MYLocation://GoThere" ] ) {
//Here present the new view controller
MyViewController *controller = [[MyViewController alloc] init];
[self presentViewController:controller animated:YES];
return NO;
}
return YES;
}
我认为您可以使用 Omar 发布的 shouldStartLoadWithRequest 。如果新的 viewcontroller 有一个 webviewcontroller,那么你应该将 url(甚至是请求)传递给新的 viewcontroller 以显示点击的 URL。