【问题标题】:MPMoviePlayer done button issueMPMoviePlayer 完成按钮问题
【发布时间】:2011-05-26 17:24:48
【问题描述】:

我正在使用 MPMoviePlayer 来显示视频。我进入全屏模式,当单击完成按钮时,我希望它从我的视图中删除整个电影播放器​​。目前它只退出全屏模式。你如何跟踪被点击的 doneButton 或者我该如何解决这个问题?

【问题讨论】:

    标签: iphone objective-c ios mpmovieplayercontroller


    【解决方案1】:

    您可以通过在MPMoviePlayerDidExitFullscreenNotification 上添加通知处理程序来做到这一点,因为一旦用户点击完成按钮就会发送通知。

    在你的初始化程序中的某个地方

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MPMoviePlayerDidExitFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    

    现在实现那个处理程序:

    - (void)MPMoviePlayerDidExitFullscreen:(NSNotification *)notification
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:MPMoviePlayerDidExitFullscreenNotification 
                                                      object:nil];
    
        [moviePlayerController stop];
        [moviePlayerController.view removeFromSuperview];
    }
    

    【讨论】:

    • @Jackelope11 如果此答案解决了您的问题,请单击此答案左侧的复选标记以及向上的箭头 - 谢谢,我很高兴这对您有所帮助。
    • 我做了检查,但我没有足够的分数来投票。不过我很感激这个答案。
    • @Jackelope11 你检查了另一个答案:D - 好吧,足够接近 - 快乐编码!
    • @Hemang,如果您不提出问题,我该如何提供帮助?
    • 我正在尝试自己解决这个问题——这个解决方案的问题是,如果用户也使用“缩小”按钮最小化,你最终会退出。这绝对不是正确的行为。
    【解决方案2】:

    据我所知,您不会在单击“完成”按钮时收到通知。但是,当单击“完成”按钮后电影播放器​​退出全屏时,您会收到通知。为此,您使用MPMoviePlayerDidExitFullscreenNotification

    要观察并处理此通知,您需要将以下代码粘贴到包含 IBAction 的类文件中(将其放入 viewDidLoad 方法中):

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullScreen) name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
    

    现在你需要在同一个类中创建exitedFullScreen 方法:

    -(void) exitedFullScreen
    {
         //Do whatever you want here
    }
    

    最后,在您的 viewDidUnload 方法中,粘贴以下行:

    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"MPMoviePlayerDidExitFullscreenNotification" object:nil];
    

    解释发生了什么:

    viewDidLoad 中的“addObserver”代码行确保负责处理moviePlayer 的viewController 正在监听MPMoviePlayerDidExitFullScreen 通知。

    这一行使得当通知到来时,exitedFullScreen 方法被触发,您可以在其中放置您想要在单击“完成”按钮时运行的代码。

    在 viewDidUnload 中,viewController 将被卸载,因此您想停止收听通知,因此需要 removeObserver 部分。

    【讨论】:

    • 谢谢,不过我想知道使用它会是什么样子。我使用 IBAction 启动 MPMoviePlayer,那么我将如何实施您的建议?
    • 希德,它真的有效吗?因为我在我的应用程序中尝试了您的代码,但它没有正常工作!!!任何帮助将不胜感激。
    • Hemang,除了语法/拼写错误之外,我无法确定您的代码可能无法正常工作的原因。你能描述一下发生了什么吗?
    • 当我的视图加载时,它开始以全屏模式播放视频,它有一个按钮DONE,当用户按下它时我想退出全屏。
    • Hemang,当用户按下 Done 时自动退出全屏是标准的 iOS 行为。你的意思是要删除子视图?似乎你应该提出这个问题,并准确列出你在做什么,如果可能的话,附上截图。
    猜你喜欢
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多