Domanda

Al momento ho il seguente codice che carica un UIWebView da un'altra vista. Ora c'è qualche cosa che posso avere un pulsante di chiusura?

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

}

Ho intenzione di caricare una pagina costruita utilizzando jQuery Mobile, quindi un pulsante di chiusura all'interno della pagina sarebbe anche bene il lavoro. Ma su una barra di navigazione sarebbe l'ideale. Btw, la mia domanda fa non Have A UINavigationBar

È stato utile?

Soluzione

vorrei creare una nuova classe di sub UIViewController, dire WebViewController con pennino. Poi vorrei aggiungere un UINavigationBar con un pulsante di chiusura e di un UIWebView. Poi, per mostrare il vostro controller della vista web è possibile fare qualcosa di simile:

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

Nel vostro WebViewController è possibile definire:

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

- (IBAction)close:(id)sender;

e realizzare qualcosa di simile:

- (void)viewDidLoad {
  [super viewDidLoad]

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

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

Altri suggerimenti

Ogni volta che si carica l'UIWebView, è possibile eseguire uno snippet JavaScript sul contenuto prima.

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

Che appena dirotta il normale comportamento di window.close() e dà la possibilità di prendere la chiamata in Objective-C.

Poi, nel tuo UIWebViewDelegate si poteva ascoltare per tutto ciò che ha scelto come il vicino 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;
}

Un po 'hacker, ma permetterebbe lo sviluppatore web per controllare il look and feel del pulsante di chiusura all'interno del contenuto HTML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top