Swift - 无法关闭MPMoviePlayerViewController

dwi*_*own 9 video xcode mpmovieplayercontroller swift

我的视频会MPMoviePlayerController在我的应用中打开.除了Done关闭播放器的按钮外,一切都很好.第一次播放视频时Done按钮效果很好.但是如果你在观看它时暂停它,然后Done在第二次尝试播放视频时点击,则该Done按钮不起作用.我在这里做了一个屏幕录制,使其更容易理解:http: //1drv.ms/1Jcdodc

有人可以帮忙吗?

这是我正在使用的代码:

import UIKit
import MediaPlayer

class MainContent: UIViewController {

//Movie Player variables
    var movieViewController : MPMoviePlayerViewController?
    var movieplayer : MPMoviePlayerController!


override func viewDidLoad() {

        super.viewDidLoad()

        //Video Player setup
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "doneButtonClick:", name: MPMoviePlayerPlaybackDidFinishNotification, object: nil)

        var url = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")!
        movieViewController = MPMoviePlayerViewController(contentURL: url)

}



func doneButtonClick(sender:NSNotification?){
    let value = UIInterfaceOrientation.Portrait.rawValue
    UIDevice.currentDevice().setValue(value, forKey: "orientation")
    }

        //when watch button is pressed, present the movie player
    @IBAction func watchPressed(sender: AnyObject)
    {self.presentMoviePlayerViewControllerAnimated(movieViewController)}

 }
Run Code Online (Sandbox Code Playgroud)

dwi*_*own 3

为了解决这个问题,我将其添加myMoviePlayerViewController.moviePlayer.stop()到“doneButtonClick”函数中。然后我将myMoviePlayerViewController.moviePlayer.play()再次添加到

@IBAction func watchPressed(sender: AnyObject)
    {self.presentMoviePlayerViewControllerAnimated(movieViewController)}

 }
Run Code Online (Sandbox Code Playgroud)

总而言之,一个简单的修复!代码如下:

import UIKit
import MediaPlayer

class MainContent: UIViewController {

//Movie Player variables
    var movieViewController : MPMoviePlayerViewController?
    var movieplayer : MPMoviePlayerController!


override func viewDidLoad() {

        super.viewDidLoad()

        //Video Player setup
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "doneButtonClick:", name: MPMoviePlayerPlaybackDidFinishNotification, object: nil)

        var url = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")!
        movieViewController = MPMoviePlayerViewController(contentURL: url)

}

 func doneButtonClick(sender:NSNotification?){
    let value = UIInterfaceOrientation.Portrait.rawValue
    UIDevice.currentDevice().setValue(value, forKey: "orientation")
    movieViewController?.moviePlayer.stop()
  }

    @IBAction func watchPressed(sender: AnyObject){
        self.presentMoviePlayerViewControllerAnimated(movieViewController)
        movieViewController?.moviePlayer.play()
    }
}
Run Code Online (Sandbox Code Playgroud)