2013-05-02 69 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

相關問題