Я использую UIWebView, который часто обновляется с помощью
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
Загруженная HTML-строка изменяется, чтобы выделить следующее слово, которое должен ввести пользователь. Чтобы прокрутить текст по мере ввода, я использую:
[webView stringByEvaluatingJavaScriptFromString:
[NSString stringWithFormat: @"window.scrollBy(0, %d);", yScroll]];
, который вызывается внутри
-(void) webViewDidFinishLoad:(UIWebView *)webView
внутри делегата веб-представления.
Хотя это работает, веб-представление прокручивается вверх и каждыйкаждый раз, когда он загружается, а затем прокручивается в нужное положение, что вызывает нежелательное мерцание.
Интересно, что это мерцание появляется на устройстве, но не на симуляторе.
Я попытался установитьсмещение альтернативно, например:
webView.scrollView.contentOffset = CGPointMake(0, yScroll);
, которое прокручивает веб-представление, но не влияет на мерцание.
Я также переопределил
- (void)webViewDidStartLoad:(UIWebView *)webView
и установил скрытыйсвойство веб-представления к YES, сделал прокрутку и открыл веб-представление в методе
-(void) webViewDidFinishLoad:(UIWebView *)webView
, но безрезультатно.
Моим последним средством было бы обрезать линии изHTML-строкакогда пользователь печатает, загружая обновленную строку каждый раз и полностью избегая прокрутки.
Прежде чем я пойду по этому пути, есть ли у кого-нибудь представление о том, как заставить прокрутку работать без "мерцания"?
Большое спасибо