0

こんにちは皆さん、HTML5 キャンバスで作成されたいくつかのアニメーションがあります。これらのアニメーションは、異なる UIViewControllers にある UIWebView にロードされています。UIWebView を含む UIViewController に移動すると、問題は完全に機能します。別のビューコントローラーに移動すると問題が発生します。 UIWebViewを含むUIActivityインジケーターのみが表示され、空白になります。また、UIWebViewを含むUIViewControllerにいる場合、これを別のUIViewControllerに残して内部に戻ると、同じ問題が発生します。

これは、UIWebView にアニメーションをロードするために使用しているコードです。

 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index"
                                                     ofType:@"htm"
                                                inDirectory:@"SL_03Problema/HTML"];
NSLog(@"este es el path %@",filePath);

NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[self.problemaWV loadRequest:request];

timer=[NSTimer scheduledTimerWithTimeInterval:(1.0/2.0) target:self selector:@selector(loading) userInfo:nil repeats:YES];



-(void)loading
{
    if (!_problemaWV.loading) {

        [_activityIndicator stopAnimating];

    }else
    {

        [_activityIndicator startAnimating];
    }
}

この問題は、私がios 6.1で抱えているように、ios 5は完璧に動作します

ストーリーボードを使用しています

ご助力ありがとうございます。

編集: シングルトン クラスを実装して UIWebView を 1 回インスタンス化し、2 番目の問題のみを解決してみてください。ただし、コントローラーを含む UIView から別の UIWebView に移動しようとすると、アニメーションが空白になります。

4

1 に答える 1

0

リロードすると、つまり別のタイマーを再スケジュールすると、一部のタイマーが互いに干渉する可能性があります。読み込みが完了したにもかかわらず、タイマーが 0.5 秒ごとに起動するのは意味がありません。

これをタイマーで解決するには、loadingプロパティが false になったときにタイマーを無効にする必要があります。タイマーへの参照を保持していることを確認してください。

if (!_problemaWV.loading) {
   [_activityIndicator stopAnimating];
   [_timer invalidate]; 
   _timer = nil;
}

確かに、UI 要素を更新する必要があるかどうかを 1/2 秒ごとにタイマーでチェックするという設計パターンは、あまり良い方法ではないと思います。むしろ、UIWebView のデリゲート メソッドを使用して、読み込みが完了したことを UI に通知する必要があります。

于 2013-06-19T16:45:05.333 に答える