UIWebView не отвечает - PullRequest
       11

UIWebView не отвечает

1 голос
/ 12 октября 2009

У меня проблемы с перехватом кликов по URL в UIWebView. Я прочитал и нашел, что самая распространенная проблема заключается в том, что ссылки имеют атрибут target = "_ blank", который открывается в новом окне, но у моего нет такого атрибута. URL-адреса имеют вид "/ слово", где слово - это произвольное слово. Я также кодирую их с% 20, когда это необходимо. Мой класс UIWebViewDelegate даже не получает событие shouldStartLoadWithRequest: просто ничего не происходит. Я также попытался вставить кнопку в HTML, и они тоже не отвечают.

Существуют ли другие правила, определяющие, какие URL-адреса будет подтверждать UIWebView? Я попытался использовать абсолютный URL (и даже просто "http://www.google.com"),", а также заменить всю строку HTML только действительной ссылкой на Google, но все безрезультатно. И действительно странным является то, что я могу найдите одну ссылку, которая будет работать - по ней можно щелкнуть, и я успешно поймал событие, но, кажется, (я выглядел довольно усердно) нет ничего особенного между HTML-кодом, содержащим эту ссылку, и другими.

Учитывая, что я новичок в платформе iPhone, я полагаю, что вполне могу делать что-то более фундаментальное неправильно. Поток через приложение выглядит следующим образом: основным представлением является UITableViewController, который позволяет пользователям выбирать из списка слов. Когда слово выбрано, новый UIViewController создается и выдвигается на экран. Это представление с UIWebView, которое отображает данные, загруженные из базы данных SQLite. Некоторые соответствующие биты кода приведены ниже.

//move from the UITableViewController to UIViewController with UIWebView
DetailViewController *viewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
...
[self.navigationController pushViewController:viewController animated:YES];

//load HTML and display it in a UIWebView
NSString *output = [NSString stringWithFormat:@"%@%@%@",header,definition,footer];
[definitionView loadHTMLString:output baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

Любая помощь будет принята с благодарностью - с этим я немного выдернул волосы.

1 Ответ

0 голосов
/ 12 октября 2009

Вы должны взглянуть на PhoneGap: http://phonegap.com/

PhoneGap делает именно это (в основном это большой гигантский UIWebViewDelegate, который позволяет писать приложения для JavaScript для iPhone, которые могут использовать камеру, GPS, акселерометр и т. Д.). Загрузите исходный код, откройте PhoneGap.xcodeproj в папке «iphone» и посмотрите на класс PhoneGapDelegate. Это отличный пример использования UIWebViewDelegate, трудно найти лучший пример :) И он, конечно, работает.

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