0

私が取り組んでいるモバイルアプリは、アプリケーションのsqliteデータベースで定義されたURLを開き、ビデオコンテンツをアプリ内のプレーヤーにストリーミングするwebview viewcontrollerをロードします。

ビデオは正しく読み込まれ、再生されますが、ビューを閉じようとするとクラッシュします。

関連する obj-c コードは次のとおりです。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil gscreenvid:(NSString *)url {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        gscreenvid = url;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    if (gscreenvid != nil && [gscreenvid compare:@""] != 0) {
        NSURL *p_url = [NSURL URLWithString:gscreenvid];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:p_url];
        [webView loadRequest:requestObj];
    }
}

- (IBAction) cancelButtonTapped:(id) sender {
    [self.delegate dismissViewControllerAnimated:YES completion:nil];
}
4

2 に答える 2

0

私の問題を解決するために、これらの行をviewDidLoadに追加しました

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackStateDidChange:) name:@"MPAVControllerItemPlaybackDidEndNotification" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerWillExitFullscreen) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}

- (void)playerWillExitFullscreen {
    [self.delegate dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"done");
}

- (void)playbackStateDidChange:(NSNotification *)note {
    NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo
    objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
    [self.delegate dismissViewControllerAnimated:YES completion:nil];
}
于 2013-11-18T06:06:46.733 に答える