UIWebView - схема неизвестна - PullRequest
1 голос
/ 24 мая 2011

Мне нужна помощь в обработке некоторых NSData объектов внутри UIWebView.Нажатие на ссылку внутри UIWebView вызывает запись NSLog:

Scheme unkown, doing nothing: <URL>

Вот что я сделал:

Я запускаю внешний HTTPGetOperation, чтобы получить ответ на URL-запрос,Мне нужно сделать это из-за обработки загрузки файлов.Ответ сохраняется в объекте NSData.

Затем я загружаю эти данные в метод, который вызывается при выполнении HTTPGetOperation:

[myWebView loadData:myNSDataObject MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];

Пока что UIWebViewпоказывает содержимое myNSDataObject правильно.

Но, когда я пытаюсь нажать на ссылку внутри этого содержимого, я получаю NSLog запись «Неизвестная схема, ничего не делая:» с URL-адресом ссылки.

Примечание: после нажатия на ссылку методы делегата, такие как -webView:shouldStartLoadWithRequest:navigationType:, не вызываются.

Примечание: для делегата установлено значение [self.myWebView setDelegate:self]

Какие методы создают эту запись NSLog?

Почему методы делегата не вызываются после нажатия на ссылку?

Кто-нибудь знает ответ?

1 Ответ

1 голос
/ 19 июля 2011

Как кодируются ссылки?Это ссылки http: // или они пользовательские?Пока ссылка находится в стандартной форме, метод shouldStartLoadWithRequest может проверить схему URL-адреса, чтобы определить, как ее следует обрабатывать.

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 44.0f, frame.size.width, frame.size.height - 44.0f)];
webView.delegate = self;

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([[[request URL] scheme] isEqualToString:@"mycustomdata"]) {
        // insert your code here to actually load the correct data
        return NO;
    }
}

Если ваш делегат не вызывается, то у вас есть другая проблема,Я бы также рекомендовал реализовать didFailLoadWithError, webViewDidFinishLoad и webViewDidStartLoad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...