2013-05-02 107 views
1

我看到,在QTMovieLoadStateDidChangeNotification上设置通知没有任何效果,并且目标选择器永远不会被调用。我错过了什么吗?为什么QTMovieLoadStateDidChangeNotification不会触发?

在awakeFromNib:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(movieLoadStateDidChange:) 
              name:QTMovieLoadStateDidChangeNotification 
              object:nil]; 

在加载电影:

NSNumber *num = [NSNumber numberWithBool:YES]; 
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: 
url, QTMovieURLAttribute, 
nil]; 

self.mQTMovie1 = [[QTMovie alloc] initWithAttributes:attributes 
               error:&error]; 

而且

- (void)movieLoadStateDidChange:(NSNotification *)notification { 
NSLog(@"movieLoadStateDidChange got called"); 
} 
+0

是否简单地分配和初始化电影改变其负载状态?你可能不得不预先推出它,或者为了改变状态而播放它? – user1118321 2013-05-03 04:47:39

+0

不是根据文档。 – martinjbaker 2013-05-03 10:01:25

回答

1

我不知道这是答案,但我已经遇到了这个之前。原因在我的情况是一个文件的编解码器只支持第三方插件(在我的情况下Flip4Mac)。

加载状态通知在电影自动播放(无处)后才结束。对于长媒体文件,它看起来像通知从不被调用,因为在测试我们的代码时,我们很少等待5分钟或一小时的时间来发送加载通知。对于用户来说,它看起来应用程序根本不会加载文件。

让用户在系统偏好设置中禁用插件的自动播放功能可以解决问题,但不幸的是,这一个支持常见问题我无法解决,因为有问题的应用程序的用户经常使用Flip4Mac来支持常见文件数字录音机。

+0

这是使用ProRes和Animation等标准编解码器。由于查询加载状态说它已加载,但它没有在屏幕上绘制,所以导致在QTMovieLayer上设置影片时出现问题。最后,在设置QTMovieLayer电影之前,我在0.2秒的时间内进行了黑客入侵,所有这一切都很好:-) – martinjbaker 2013-05-07 13:51:18

相关问题