Frage

Helfen Sie dabei, eine einheitliche Adressleiste in iOS 5 für eine Browser-App zu erstellen?Hier ist also meine Adressleiste.

-(IBAction)url:(id)sender {
    NSString *query = [urlBar.text stringByReplacingOccurrencesOfString:@" " withString:@"+"];
    NSURL *urlQuery = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", query]];
    NSURLRequest *request = [NSURLRequest requestWithURL:urlQuery];
    [webPage loadRequest:request];
}

Könnte ich nicht einen „sonst“-Verweis hinzufügen, um zu sagen, dass, wenn es sich nicht um eine Adresse handelt, das Google-Such-Tag angehängt werden soll?Wenn das so ist, wie?Und wüssten Sie, wie man Bing anstelle von Google verwendet?

-(IBAction)googleSearch:(id)sender {
    NSString *query = [googleSearch.text stringByReplacingOccurrencesOfString:@" " withString:@"+"];
    NSURL *urlQuery = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/search?hl=en&site=&q=%@", query]];
    NSURLRequest *request = [NSURLRequest requestWithURL:urlQuery];
    [webPage loadRequest:request];
}
War es hilfreich?

Lösung

Hier sind einige Tipps, die Ihnen helfen:

  • verwenden stringByAddingPercentEscapesUsingEncoding: anstelle Ihres „+“-Ersatzes.
  • Sie sollten vor dem Hinzufügen prüfen, ob http:// kein Präfix der URL-Zeichenfolge ist
  • Sie sollten das implementieren UIWebViewDelegate Protokoll zur Identifizierung, wenn beim Laden einer ungültigen URL ein Fehler auftritt
  • Starten Sie dann als Ersatz Ihre Google-Suche (jetzt können Sie „ “ durch „+“ ersetzen) ...oder Bing, was auch immer und es bleibt Ihnen überlassen!

Ihr Code sollte etwa wie folgt aussehen:

...
webView.delegate = self; // Should appear in your code somewhere
...

-(IBAction)performSearch {
    if ([searchBar.text hasPrefix:@"http://"]) {
        ... // Make NSURL from NSString using stringByAddingPercentEscapesUsingEncoding: among other things
        [webView loadRequest:...]
    } else if ([self isProbablyURL:searchBar.text]) {
        ... // Make NSURL from NSString appending http:// and using stringByAddingPercentEscapesUsingEncoding: among other things
        [webView loadRequest:...]
    } else {
        [self performGoogleSearchWithText:searchBar.text]
    }
}

- (BOOL)isProbablyURL:(NSString *)text {
    ... // do something smart and return YES or NO
}

- (void)performGoogleSearchWithText:(NSString *)text {
    ... // Make a google request from text and mark it as not being "fallbackable" on a google search as it is already a Google Search
    [webView loadRequest:...]
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    ... // Notify user
    if (was not already a Google Search) {
        [self performGoogleSearchWithText:searchBar.text]
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top