4 Stimmen

Wie lädt man eine UIWebView mit einer Schaltfläche zum Schließen oben?

Ich habe derzeit den folgenden Code, der eine UIWebView aus einer anderen Ansicht lädt. Gibt es jetzt irgendwie kann ich eine Schaltfläche zum Schließen haben?

- (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];

}

Ich werde eine Seite laden, die mit Jquery Mobile erstellt wurde, so dass eine Schaltfläche zum Schließen innerhalb der Seite auch gut funktionieren würde. Aber auf einer Navigationsleiste wäre ideal. Btw, meine Anwendung tut pas haben eine UINavigationBar

11voto

Robert Höglund Punkte 9950

Ich würde eine neue Unterklasse von UIViewController sagen WebViewController mit einer Feder. Dann würde ich eine UINavigationBar mit einer Schließtaste und einem UIWebView . Um Ihren Web-View-Controller anzuzeigen, können Sie dann etwas tun wie:

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

In Ihrem WebViewController können Sie definieren:

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

- (IBAction)close:(id)sender;

und implementieren Sie etwas wie dieses:

- (void)viewDidLoad {
  [super viewDidLoad]

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

- (IBAction)close:(id)sender {
  [self dismissModalViewControllerAnimated:YES];
}

5voto

dillonchr Punkte 51

Immer wenn Sie die UIWebView laden, könnten Sie zunächst ein Javascript-Snippet auf den Inhalt anwenden.

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

Dadurch wird das normale Verhalten der window.close() und gibt Ihnen die Möglichkeit, den Aufruf in Ihrem Objective-C abzufangen.

Dann in Ihrem UIWebViewDelegate könnten Sie für was auch immer Sie wählte als die schließen url hören.

- (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;
}

Das ist zwar etwas umständlich, aber es würde dem Webentwickler ermöglichen, das Aussehen der Schaltfläche "Schließen" innerhalb des HTML-Inhalts zu steuern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X