Just a Computer Graphics Studio & My Life

最近一直在研究MPMoviePlayerController,才發現內建的功能不是很完全,若要做到令人滿意的境界,只有客制化一途~

Register observer when player finishes displaying

這裡就是註冊觀察者來偵測播放結束時要執行的動作

/**
 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隨著裝置旋轉。

參考:。

Advertisements

Comments on: "[iOS] 註冊Observer製作播放結束時要執行的動作" (1)

  1. […] 這裡就是註冊觀察者來偵測播放狀態改變時要執行的動作。那裡是註冊觀察者來偵測播放結束時要執行的動作。 […]

    喜歡

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: