最近一直在研究MPMoviePlayerController,才發現內建的功能不是很完全,若要做到令人滿意的境界,只有客制化一途~
這裡就是註冊觀察者來偵測播放結束時要執行的動作。
/**
Theme: Register Observer when Playback Did Finish
IDE: Xcode 5
Language: Objective C
Date: 102/12/19
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
// .h file
MPMoviePlayerController *moviePlayerController;
// .m file
//使用Observer製作播放結束時要執行的動作
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
-(void)moviePlayBackDidFinish:(NSNotification *)notification
{
NSDictionary *dict = [notification userInfo];
MPMovieFinishReason finishReason = [dict[@"MPMoviePlayerPlaybackDidFinishReasonUserInfoKey"] intValue];
// 處理錯誤,如檔案存在卻無法播放
if (finishReason == MPMovieFinishReasonPlaybackError) {
}
// 按下Down的處理
else if (finishReason == MPMovieFinishReasonUserExited) {
}
// 按下前進、後退或播放完畢
else if (finishReason == MPMovieFinishReasonPlaybackEnded) {
}
}
總共有三種情況,前兩者還能對應處理。然而無法區分前進和後退的差別,至於播放完畢還可以偵測目前播放時間點和影片長度是否一樣。也就是說tap動作,按前進和後退效果一樣,我發現若在播放約2秒前按後退,它會重播影片。long press動作則能正常運作,前進是順快轉,後退是逆快轉。
若有時間的話,真想自己刻一個控制項,若考慮到裝置旋轉的話,又會有一堆情況要個別處理呢!可參考特定view自動旋轉,讓view隨著裝置旋轉。
參考:。

Comments on: "[iOS] 註冊Observer製作播放結束時要執行的動作" (1)
[…] 這裡就是註冊觀察者來偵測播放狀態改變時要執行的動作。那裡是註冊觀察者來偵測播放結束時要執行的動作。 […]
讚讚