4

我目前有以下代码从另一个视图加载 UIWebView。现在无论如何我可以有一个关闭按钮吗?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UIWebView *webView=[[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    [self.view addSubview:webView];
    NSURLRequest *urlRequest;
    NSURL *urlforWebView;
    urlforWebView=[NSURL URLWithString:@"http://www.google.com"];
    urlRequest=[NSURLRequest requestWithURL:urlforWebView];
    [webView loadRequest:urlRequest];

}

我将加载使用 jquery mobile 构建的页面,因此页面内的关闭按钮也可以正常工作。但在导航栏上将是理想的。顺便说一句,我的应用程序没有UINavigationBar

4

2 回答 2

11

我会创建一个新的子类UIViewController,比如说WebViewController用笔尖。然后我会添加一个UINavigationBar带有关闭按钮和一个UIWebView. 然后要显示您的网络视图控制器,您可以执行以下操作:

WebViewController *webViewController = [[WebViewController alloc] init];
webViewController.loadURL = [NSURL URLWithString:@"http://www.google.com"];
[self presentModalViewController:webViewController animated:YES];
[webViewController release];

在你的WebViewController你可以定义:

@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) NSURL *loadURL;

- (IBAction)close:(id)sender;

并实现这样的事情:

- (void)viewDidLoad {
  [super viewDidLoad]

  NSURLRequest *urlRequest = [NSURLRequest requestWithURL:self.loadURL];
  [self.webView loadRequest:urlRequest];
}

- (IBAction)close:(id)sender {
  [self dismissModalViewControllerAnimated:YES];
}
于 2010-11-27T12:19:00.460 回答
5

每当您加载 UIWebView 时,您都可以先在内容上运行一个 javascript 片段。

[webView stringByEvaluatingJavaScriptFromString:@"window.close = function() { window.location = 'app://close-webview'; };"];

这只是劫持了正常行为,window.close()并让您有机会在 Objective-C 中捕获调用。

然后在您的 UIWebViewDelegate 中,您可以收听您选择作为关闭 url 的任何内容。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if([request.URL.absoluteString isEqualToString:@"app://close-webview"]) {
        webView.hidden = YES;
        // or whatever you want to do to remove the UIWebView...
        return NO;
    }
    return YES;
}

有点骇人听闻,但它允许 Web 开发人员从 HTML 内容中控制关闭按钮的外观和感觉。

于 2013-03-26T05:27:29.143 回答