В настоящее время я пишу приложение для iOS, которое использует UIWebView для навигации по страницам.Иногда мне нужно динамически удалять элементы в UIWebView, используя stringByEvaluatingJavaScriptFromString:
, но это блокирует основной интерфейс на иногда до 2 секунд на моем первом поколении iPod touch и, возможно, на полсекунды на iPhone 3GS.JavaScript, который я использую для его удаления, просто:
element.parentNode.removeChild(element);
Ничего более сложного, чем это.В то же время я делаю некоторые базовые 2D-рендеринга в OpenGL ES, и если перерисовка UIWebView не заблокируется, я бы использовал простую CoreAnimation в основном потоке.Может ли быть так, что он должен пересчитать дерево DOM, все позиции элементов и т. Д.?Должно ли это действительно заблокировать основной поток пользовательского интерфейса?Это то, что я звоню stringByEvaluatingJavaScriptFromString:
, который блокирует все?Это нормально и следовало ожидать на такого рода аппаратных средствах?Странно то, что он способен отображать некоторые полусложные анимации MooTools в веб-просмотре с изменением непрозрачности и высоты, но удаление одного элемента занимает несколько секунд.
У кого-нибудь есть идеи по улучшению?Может быть, лучше просто скрыть элементы, используя visibility: hidden
, или установить opacity: 0
?Какие-нибудь мысли или мудрые слова опыта?