Как обновить UIWebView во время анимации? - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть представление, которое содержит UIWebView (с текстовыми изображениями и т. Д.), Который прикреплен к GestureRecognizer. После того, как веб-представление «постучало», оно переворачивается и отображает обновленный текст, изображения и т. Д. В этом веб-представлении. У меня есть действие, связанное с этим распознавателем, следующим образом:

- (IBAction)flipWebViewGestureRecognizer:(id)sender 
{
    // isFrontView is boolean to determine if card is front or back
    if(self.isFrontOfView)
    {
        self.isFrontOfView = NO;
        [UIView transitionWithView: self.imageView
                          duration: 1.0
                           options: UIViewAnimationOptionTransitionFlipFromTop
                        animations: ^{ [self loadBack]; }
                        completion: nil];
    }
    else
    {
        self.isFrontOfView = YES;
        [UIView transitionWithView: self.imageView
                          duration: 1.0
                           options: UIViewAnimationOptionTransitionFlipFromTop
                        animations: ^{ [self loadFront]; }
                        completion: nil];
    }
}

Методы loadFront и loadBack следующие (сам HTML сокращен до минимума):

- (void) loadFront
{
    NSString *html = @"<p>Front Of Card</p>";
    [self.viewWebView loadHTMLString:html baseURL:nil];
}

- (void) loadBack
{
    NSString *html = @"<p>Front Of Card</p> <br /> <p>as well as back of card<p>";
    [self.viewWebView loadHTMLString:html baseURL:nil];
}

С точки зрения функциональности это прекрасно работает. Карточка может быть перевернута, и веб-представление обновляется новым текстом HTML. Однако обновление реального веб-представления происходит после того, как карта уже перевернулась (после анимации, а не во время). Что мне нужно сделать, чтобы viewWebView уже загружался с обновленным html, как только анимация представления завершит свое отражение, а не сразу после этого.

1 Ответ

1 голос
/ 11 декабря 2011

Я считаю, что ваша проблема в том, что UIWebView загружает элементы асинхронно. Если это так, вам нужно начать загрузку, а затем, когда UIWebView вызовет функцию делегата webViewDidFinishLoad:, начать анимацию.

Однако, возможно, что UIWebView будет отображаться на экране перед вызовом метода делегата, заставляя содержимое мигать до начала анимации.

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

...