2013-08-28 2 views
0

У меня есть UIWebview, который загружает некоторые локальные материалы. Я подключил две кнопки, которые запускают методы goBack и goForward.Задержки UIWebView shouldStartLoadWithRequest до завершения прокрутки

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

Я попытался положить бревно в

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest... 

Журнал показывает, что она не увольняют до тех пор, когда страница делается прокрутки.

Задержка довольно мала при использовании поведения прокрутки по умолчанию UIWebViews. Но я изменился, что, чтобы получить более родное чувство, выполнив:

webView.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal; 

При прокрутке длинных страниц, проблема становится очевидной, как это может занять несколько секунд до того, как прокрутка выполняется и последующие загрузки страницы.

Кто-нибудь еще испытал это и нашел решение?

ответ

1

Поскольку отслеживание событий в UIScrollview блокирует основной поток.

Вы можете попытаться принудительно прокрутить прокрутку (или замедление) прокрутки перед другим веб-действием.

Ref: How can I programmatically force-stop scrolling in a UIScrollView?

+0

Спасибо, это работает! Я решил это, добавив метод killScroll из связанного решения в мой подкласс webView, и я вызываю его на '' 'goBack''',' '' goForward''' и '' 'loadRequest'''. Он останавливает прокрутку и мгновенно загружает следующую страницу. – reekris