意外的 SafariViewController 反应

Unexpected SafariViewController reaction

我有一个带有一些 Table 视图控制器的应用程序。在每个单元格的最后一个中,我有一个不同的 url。然后我决定插入一个 SafariVC,但发生的情况是它就像 FirstResponder 一样。

class Page3: UITableViewController, GADBannerViewDelegate, SFSafariViewControllerDelegate {

    ...

    @IBOutlet weak var websiteTextView: UITextView!

    ...

    override func viewDidLoad() {
        super.viewDidLoad()

        ...

        websiteTextView.text = goP3.website

        let safariVC = SFSafariViewController(url: URL(string: goP3.website)!)
        present(safariVC, animated: true, completion: nil)
        safariVC.delegate = self

        ...
    }
}

看了上面的gif,有两个疑惑:

1st. 当我进入 Page3 时,它会自动打开 SafariViewController。我该如何解决?

2st. 当我单击 url 时,它不会打开 SafariViewController。我该怎么做才能修复它?

对于 1) 第一个问题的答案如下: 您需要从 ViewDidLoad 方法中删除以下代码:

websiteTextView.text = goP3.website
let safariVC = SFSafariViewController(url: URL(string: goP3.website)!)
present(safariVC, animated: true, completion: nil)
safariVC.delegate = self

对于2)第二个问题的答案如下: 您需要创建一个 UIButton 并为 goP3.website 设置标题文本。然后为该 UIButton 创建 IBAction 方法。类似下面

@IBOutlet weak var btnWebsite: UIButton!
override func viewDidLoad() {
    super.viewDidLoad()

    ...
    btnOK.setTitle(goP3.website, for: .normal)
}
@IBAction func btnWebsiteSelect(_ sender: UIButton) {

    let safariVC = SFSafariViewController(url: URL(string: goP3.website)!)
    present(safariVC, animated: true, completion: nil)
    safariVC.delegate = self
}