0

问候大家好,我有几个用 html5 画布创建的动画,这些动画正在加载到不同 UIViewController 中的 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 一次,只解决了第二个问题,但是如果我尝试从包含控制器的 UIView 转到另一个 UIWebView,动画是空白的

4

1 回答 1

0

如果你重新加载,也许有些定时器会互相干扰,即重新安排另一个定时器。尽管加载已完成,但计时器每 1/2 秒触发一次是没有意义的。

要使用计时器解决此问题,您应该在loading属性变为 false 时使计时器无效。确保您保留对计时器的引用。

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

当然,如果需要更新 UI 元素,我认为每 1/2 秒检查一次计时器的设计模式不是很好的做法。相反,您应该使用 UIWebView 的委托方法来通知您的 UI 加载已完成。

于 2013-06-19T16:45:05.333 回答