创建在加载视频时响应的UIButton

时间:2017-01-03 23:16:20

标签: ios objective-c events uibutton interrupt

我目前有一个通过名为- loadCurrentVideo的方法加载视频的屏幕,这种方法通常需要2-3秒才能在wifi上完成,但在数据上需要10-20秒才能完成。我有一个内置在播放器中的按钮,当它被点击时退出播放器,但该按钮仅在视频加载后才能工作。我希望能够在加载和播放阶段的任何时候点击播放器时添加一个退出播放器的按钮。

在加载视频时,我无法使用播放器上的任何按钮,因为我假设视频仍在加载并执行上述方法。如何构建一个按钮,该按钮能够始终响应敲击并在执行时中断方法以返回应用程序所在的上一个屏幕?

以下是方法:

- (void) loadCurrentVideo {
    __block UIActivityIndicatorView *pw = _pleaseWait;
    __block KolorEyes *ke = _koloreyes;
    __block UISlider *slider = _timeSlider;

    _pleaseWait.hidden = NO;
    [_pleaseWait startAnimating];

    dispatch_async(dispatch_get_main_queue(), ^{
        NSURL *url1 = [NSURL URLWithString:url];
        [_koloreyes setDisplayDevice:kKE_DISPLAY_HMD forView:_viewRectHandle];
        [_koloreyes setCameraControlMode:kKE_CAMERA_TOUCH forView:_viewRectHandle];
        err = [_koloreyes setAssetURL:url1
                withCompletionHandler:^{
                    NSLog(@"Video %@", url1.path);
                    [pw stopAnimating];
                    pw.hidden = YES;

                    CMTime duration = [ke getMediaDuration];
                    if (CMTIME_IS_INDEFINITE(duration)) {
                        slider.hidden = YES;
                    }
                    else {
                        [slider setMaximumValue:CMTimeGetSeconds(duration)];
                    }

                    [ke play];
                    [self postView];
                    Log("Kolor Eyes set asset URL completion handler");
                }];
        if (err != kKE_ERR_NONE) {
            [pw stopAnimating];
            pw.hidden = YES;
            Log("Kolor Eyes setAssetURL failed with error %d", err);
        }
    });
}

0 个答案:

没有答案