我有一个带有UIWebView的iOS应用程序,我需要从服务器端接收一个href url,然后在我的UIWebView中显示来自该href的HTML5的网页:
MyViewController *myVC = [[MyViewController alloc] init];
myVC.url = serverSideResponse.href;
[self.navigationController presentViewController:myVC animated:YES completion:nil];
在MyViewController.m中,我有这个:
_webView = [[UIWebView alloc] initWithFrame:myFrame];
[self.view addSubView:_webView];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[_webView loadRequest:request];
因此网页来自服务器端,我希望我的iOS app / webview知道该页面上是否点击了该按钮。更具体地说,如果单击该按钮,则关闭我的webview(意味着removeFromSuperView)。
现在我能看到的是,当我查看该网页的源代码时,我知道按钮ID。
我收到的网址是:https://api.uber.com/v1/surge-confirmations/edbfdd9a-276b-4b85-b3f4-5a0c948a17fe
。当我在我的网页视图中加载它时,它有一个按钮,当我点击它时没有发生任何事情,只有控制台记录了点击事件,请求是:https://api.uber.com/v1/surge-confirmations/edbfdd9a-276b-4b85-b3f4-5a0c948a17fe#
< - 有一个额外的{{1 }}
但是,当我将url放在桌面浏览器中以显示它并单击按钮时,它可以按预期重定向到下一个URL(#
)。
请指教,谢谢!
答案 0 :(得分:1)
感谢@Wain和@palme,我找到了一个UIWebView委托回调方法
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
可以做到这一点。
参数request
和navigationType
可以告诉您哪个navigationType触发了哪个请求。