【问题标题】:Can a UIWebView raise events to the containing view controller?UIWebView 可以向包含的视图控制器引发事件吗?
【发布时间】:2010-08-28 09:22:00
【问题描述】:
我在 UIViewController 中嵌入了一个 UIWebController。
我为 UIViewcontroller 编写 HTML 代码,因此我可以完全控制 HTML 页面。
当用户单击 HTML 页面中的按钮时 - 可以通知包含 UIViewController 的内容吗?
UIWebView 可以向 UIViewControler 发送/引发事件吗?
【问题讨论】:
标签:
iphone-sdk-3.0
uiviewcontroller
uiwebview
【解决方案1】:
您需要为您的 Web 视图实现 webView:shouldStartLoadRequest:navigationType: 委托方法 (Apple Docs).
这是一个简单的例子:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
if ([[url scheme] isEqualToString:@"someLinkURL"]) {
// Display alert
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"I'm a message!" delegate:self cancelButtonTitle:@"Okay!" otherButtonTitles:nil];
[myAlert show];
[myAlert release];
return NO;
}
return YES;
}
您的 VC 必须是 webViewDelegate 才能使此方法起作用。
如果您想手动处理所有点击(即不要转到 Web 视图中的其他页面),请在最后一行返回 NO。