7

ViewControllerに埋め込まれたテストがありNavigationControllerます。テストViewControllerでは、WebViewボタンがあります。それをクリックするとbutton、ナビゲートされSafariViewController、指定された URL が読み込まれます。その中でWebView、「完了」ボタンをクリックすると、デリゲートメソッドが呼び出されsafariViewControllerDidFinishます。しかし、それSafariViewControllerは却下されていません。

これが私のコードです。

- (IBAction)bannerWebviewAction:(id)sender {
    NSURL *urls = [NSURL URLWithString:@"http://www.google.com"];
    SFSafariViewController safariVC = [[SFSafariViewController alloc] initWithURL:urls];
    [self showViewController:safariVC sender:nil];
    safariVC.delegate = self;
}

#pragma SFSafariViewControllerDelegate
-(void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
    // Done button pressed
    [controller dismissViewControllerAnimated:YES completion:nil];  
}

呼び出しが完了buttonしました。ビューは閉じていません。selfとのログを確認しましたcontroller。どちらも正しいです。

4

1 に答える 1

16

あなたは言うべきではありません

[self showViewController:safariVC sender:nil];

言うべき

[self presentViewController:safariVC animated:YES completion:nil];

SFSafariViewControllers はモーダルに表示されることを意図しており、done が押されるとそれ自体を閉じます。

于 2015-12-18T14:17:36.940 に答える