Создание единой панели поиска адресов в iOS 5?

StackOverflow https://stackoverflow.com//questions/9671380

  •  12-12-2019
  •  | 
  •  

Вопрос

Помогите сделать унифицированную адресную строку в iOS 5 для приложения браузера?Так вот моя адресная бара.

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

Не смог бы добавить ссылку «else», чтобы сказать, если это не адрес, а затем добавьте тег поиска Google?Если так, как?И вы бы узнаете, как использовать Bing вместо Google?

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

Это было полезно?

Решение

Вот несколько советов, которые помогут вам:

    .
  • Используйте stringByAddingPercentEscapesUsingEncoding: вместо вашей замены «+».
  • Вы должны проверить, есть ли http:// не префикс к строке URL перед добавлением его
  • Вы должны реализовать протокол UIWebViewDelegate для идентификации, когда возникает ошибка при загрузке неверного URL-адреса
  • Тогда как замерзание запустите ваш поиск Google (теперь вы можете заменить «« + ») ... или Bing, что угодно для вас!

Ваш код должен выглядеть что-то, как следует следующим образом:

...
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]
    }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top