UIWebView shouldStartLoadWithRequest только называют однажды?

В моем приложении для iPhone у меня есть UIWebView, где я загружаю локальный HTML. Все обрабатывает очень хорошо, но теперь я хочу быть в состоянии обработать локальные ссылки (к сноскам): когда я нажимаю на локальную ссылку, я хочу быть в состоянии перейти к сноске, отнесенной ею, затем быть в состоянии возвратиться.

<a href="#tofootnote">jump to footnote</a>

Я обработал это путем добавления моего кода к shouldStartLoadWithRequest и прерывания локальных щелчков ссылки; когда на локальную ссылку нажимают, я работаю свое волшебство (скройте некоторые ui элементы, добавьте кнопку "Назад" и т.д.); нажатие на кнопку "Назад" переходит меня назад к исходному местоположению в документе HTML.

Проблема состоит в том, что нажатие на ONCE AGAIN на ссылке больше не называет shouldStartLoadWithRequest. Т.е. следующий код:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
 NSLog(@"foo bar");
 return YES;
}

только дисплеи "панель нечто" ОДНАЖДЫ (на самом деле, дважды - в первый раз, когда я первоначально загружаю документ), но только ОДНАЖДЫ впоследствии, независимо от того, сколько раз я нажимаю на локальную ссылку

Так, если у любого нет лучшего объяснения, я предполагаю, что UIWebView кэширует документ или ссылку или что-то и больше не называет обработчик после начального вызова; Если это верно, как я могу разрешить этот внутренний кэш? (не перезагружая документ)

16
задан Alex 3 December 2009 в 14:48
поделиться

4 ответа

Единственное решение, которое я нашел для этой проблемы, - это заменить строкой все привязки из «# привязка» к чему-то, что считается URL-адресом, например «| привязка». Таким образом UIWebView будет думать, что это настоящая ссылка, и при нажатии будет пытаться выполнить запрос. Это решение, очевидно, будет работать только в том случае, если вы сами обрабатываете все щелчки и, следовательно, можете интерпретировать измененные привязки. Я могу понять причину поведения UIWebView, но это довольно неприятно. Делегату действительно нужны сообщения, соответствующие обработчикам onclick и т. Д.

14
ответ дан 30 November 2019 в 22:24
поделиться

Попробуйте «прикоснуться к якоре» (назначить его к себе). Моя гипотеза состоит в том, что приведет к обновлению DOM, сделав его снова проверять ссылку. Не проверил это, это просто идея!

-1
ответ дан 30 November 2019 в 22:24
поделиться

Библиотека для комплексной обработки событий.

-121--3040031-

GTK, первоначально в C.

Портирован на Java, Python, Ruby, C++ и большинство других общих языков, которые вы можете придумать.

-121--3040030-

Это происходит и для меня, когда я использую onclick = "window.location.hash =...; return false; "вместо захвата щелчка.

Если я прокручиваю вокруг немного или нажимаю на другой якорь, я могу использовать ссылку снова.

0
ответ дан 30 November 2019 в 22:24
поделиться

NSURLRequest * request = [NSURLRequest requestWithURL: fileURL cachePolocy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval: 60.0];

[webView loadRequest: запрос];

-1
ответ дан 30 November 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: