gpt4 book ai didi

c# - 获取错误断言失败 : movie player has wrong activation state (1) even though i use only one movie player

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:16 25 4
gpt4 key购买 nike

我在 ViewController 中只使用了 1 个 MPMoviePlayerController。我正在做的是呈现一个 ViewController,其中我有一个 ScrollView ,其中有 4 - 5 个 subview ,用户可以在其中执行不同的操作,例如在 MPMoviePlayerController 中观看视频、键入一些文本、使用步进控件评价等

当用户转到 VC 观看视频并返回主 VC 并再次尝试返回时:

Getting Error Assertion failure: movie player has wrong activation state (1)

而且这个只发生在临时构建中。当我尝试在 Debug模式下重现它时,我只是看不到这个错误。这有点令人困惑。

查看下面的代码并提出更改建议。

我在一个方法中像这样初始化它。

     void SomeMethod(){

this.MoviePlayer = new MPMoviePlayerController ();
this.MoviePlayer.View.Frame = new RectangleF (AppConstants.ZeroVal,contentHeight, VIEW_WIDTH, 200);
this.MoviePlayer.ControlStyle = MPMovieControlStyle.Default;
this.MoviePlayer.SourceType = MPMovieSourceType.Streaming;
this.MoviePlayer.ScalingMode = MPMovieScalingMode.Fill;
this.MoviePlayer.ContentUrl = NSUrl.FromString(_someUrl_);
}

在 Button 的 TouchUpInside 中

 btnObj.TouchUpInside+=((ss,ee)=>{
this.MoviePlayer.View.Hidden = false;
containerView.Add (this.MoviePlayer.View);
BtnPlayFeedbackUserRespVideo.Hidden = true;
this.MoviePlayer.Play ();
});

在 ViewDidLoad 中

public override void ViewDidLoad(){
// Keyboard popup
NSNotificationCenter.DefaultCenter.AddObserver
(UIKeyboard.DidShowNotification,KeyBoardUpNotification);

// Keyboard Down
NSNotificationCenter.DefaultCenter.AddObserver
(UIKeyboard.WillHideNotification,KeyBoardDownNotification);


MPMoviePlayerController.Notifications.ObservePlaybackDidFinish(HandleMoviePlayerStoppedPlaying);
MPMoviePlayerController.Notifications.ObserveWillExitFullscreen (HandleDidExitFullScreen);
MPMoviePlayerController.Notifications.ObserveWillEnterFullscreen(HandleDidEnterFullScreen);

}



private void HandleDidExitFullScreen(object ss,NSNotificationEventArgs ee){

IsPlayingFullScreen = false;
if (this.MoviePlayer != null) {
this.MoviePlayer.Pause ();
}
}


private void HandleDidEnterFullScreen(object ss,NSNotificationEventArgs ee){


IsPlayingFullScreen = true;
if (this.MoviePlayer != null) {
this.MoviePlayer.Pause ();
}
}


private void HandleMoviePlayerStoppedPlaying(object ss,MPMoviePlayerFinishedEventArgs ee){ //MPMoviePlayerFinishedEventArgs ee){
if (this.MoviePlayer != null) {

if (ee.FinishReason == MPMovieFinishReason.PlaybackEnded || ee.FinishReason == MPMovieFinishReason.UserExited || ee.FinishReason == MPMovieFinishReason.PlaybackError) {
InvokeOnMainThread (() => {
if (ReviewState) {
if (SelectedLastChallengeForeview != null) {
this.MoviePlayer.ContentUrl = NSUrl.FromString (SelectedChallengeForReview.ResponseVideoUrl);
} else {
if (SelectedChallengeForReview != null) {
this.MoviePlayer.ContentUrl = NSUrl.FromString (SelectedChallengeForReview.ResponseVideoUrl);
}
}
} else {
this.MoviePlayer.ContentUrl = NSUrl.FromString(FeedbackToSubmit.ResponseVideoUrl);
}

this.MoviePlayer.View.Hidden = true;
BtnPlayFeedbackUserRespVideo.Hidden = false;
this.MoviePlayer.PrepareToPlay();

});
}
}
}

在ViewWillDisappear View 中

public override void ViewWillDisappear (bool animated)
{
base.ViewWillDisappear (animated);

if (IsPlayingFullScreen) {
return;
}


if (!IsSubmittingFeedback && !ReviewState) {
if (this.MoviePlayer != null) {
this.MoviePlayer.Stop ();

}


NSNotificationCenter.DefaultCenter.RemoveObserver (MPMoviePlayerController.WillEnterFullscreenNotification);
NSNotificationCenter.DefaultCenter.RemoveObserver (MPMoviePlayerController.WillExitFullscreenNotification);
NSNotificationCenter.DefaultCenter.RemoveObserver (MPMoviePlayerController.PlaybackDidFinishNotification);
NSNotificationCenter.DefaultCenter.RemoveObserver (UIKeyboard.DidShowNotification);
NSNotificationCenter.DefaultCenter.RemoveObserver (UIKeyboard.DidHideNotification);



PopToActivityVC (false);
}
}

最佳答案

我知道这有点老了,但不久前遇到了类似的问题。

请记住,当您使用 Ad-Hoc 创建二进制文件时,应用优化设置通常设置为高(默认)。这可能会影响您的应用程序的时间。调高调试方案的优化设置,您应该能够重现该问题。

您的代码看起来没问题。我不擅长 Swift,但翻译它不会出现任何问题。

您还应注意在正确的时间添加和删除通知。这也可能引发您所看到的问题。

关于c# - 获取错误断言失败 : movie player has wrong activation state (1) even though i use only one movie player,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com