2013-04-13 117 views
-1

我有這audioplayer片段的代碼,我不知道爲什麼audioPlayerDidFinishPlaying沒有被執行。爲什麼不是不執行audioPlayerDidFinishPlaying

下面是代碼的一部分,從我的audioplayer.m文件

- (void)viewDidLoad { 
[super viewDidLoad]; 
NSError* e = nil; 
self.player = [[AVPlayer alloc] initWithURL:self.contentURL]; 
if(e) 
{ 
    NSLog(@"Detected error(%@)",e); 
} 

[self.playButton setImage:[UIImage imageNamed :@"Pause_40_40.png"] forState:UIControlStateNormal] ; 
[self.playButton addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside]; 

isPlaying = true; 

//Title of Music Screen 
//self.title = titleOfTheSong; 
//self.title = @"A Fixed Title"; 

MPVolumeView * volmueView = [[MPVolumeView alloc] initWithFrame:CGRectMake(60, 323, 200, 23)]; 
volmueView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 
[self.view addSubview:volmueView]; 

[[AVAudioSession sharedInstance] setDelegate:self]; 
e = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&e]; 
NSLog(@"Error: %@", e); 

posUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(timeCounterUpdate) userInfo:self.player repeats:YES]; 
[self timeCounterUpdate2:self.positionSlider.value]; 
[self.player play]; 

} 

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
NSLog(@"Finished"); 
if (flag == NO){ 
    return; 
} 

[self.player pause]; 
[self.navigationController popViewControllerAnimated:YES]; 
} 

我在viewDidLoad中的avplayer的名字爲球員,然後檢查對抗,但它似乎仍然沒有被稱爲

音頻停止播放,但似乎仍在運行當前位置值停止 但按鈕仍然顯示,如果我暫停它,然後播放它的當前位置音頻仍然在播放模式繼續計數通過了文件的預期結束。

+0

如果您已經更加重視正確編寫代碼,那麼您甚至不會有這個問題......您似乎甚至不知道要使用哪個類...... – 2013-04-13 06:09:52

+0

謝謝您的支持反饋我正在嘗試利用某個人不在這裏的已有代碼。請給我一個關於我如何修復的例子。對於iPhone的編程,我很抱歉。 –

+0

哦,對不起......好吧。如果您只想播放音頻文件,則必須使用'AVAudioPlayer'。另外,正如我剛剛在我的答案中所肯定的那樣,您必須設置其委託(否則不會調用委託方法)。 – 2013-04-13 06:24:02

回答

0

因爲1.您不使用AVAudioPlayer而是AVPlayer,2.您不設置音頻播放器對象的代表。

0

我遇到的問題的答案實際上是由於之前的程序員曾經參與過。他錯誤地嘗試使用AVAudioPlayer來播放非本地但需要從URL中檢索的音頻文件。所以他將代碼遷移到AVPlayer,但允許保留舊的無關代碼。我錯誤地看到了代碼,並認爲正確的方法在那裏,並被它沒有運行的事實所困惑。能夠結束文件播放是他留下的功能中的一部分。我從那時起使用了正確的編碼方法來實現我想要的功能。

希望這會導致對我的分數的負面標記被刪除,因爲代碼是以前的操作,但沒有我正在尋找的功能,我犯了一個錯誤,認爲這段代碼是有效的,當它不是。