Ios 意外的SafariViewController反应
我有一个带有一些表视图控制器的应用程序。在每个单元格的最后一个单元格中,我有一个不同的url。然后我决定插入一个SafariVC,但现在发生的是,它就像是一个第一反应者Ios 意外的SafariViewController反应,ios,swift,uitableview,sfsafariviewcontroller,Ios,Swift,Uitableview,Sfsafariviewcontroller,我有一个带有一些表视图控制器的应用程序。在每个单元格的最后一个单元格中,我有一个不同的url。然后我决定插入一个SafariVC,但现在发生的是,它就像是一个第一反应者 class Page3: UITableViewController, GADBannerViewDelegate, SFSafariViewControllerDelegate { ... @IBOutlet weak var websiteTextView: UITextView! ...
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.当我进入第3页时,它会自动打开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)第二个问题的答案如下:
您需要为goP3.website创建一个UIButton并设置标题文本。然后为该UIButton创建iAction方法。像下面这样
@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
}
我想我需要“websitextview.text=goP3.website”,因为它可以让文本显示在textView中。我觉得一个按钮都不行。因为有时候我在同一个文本视图中有3到4个URL。对不起,我忘了解释这件事了。你还有别的建议吗?是的,有不同的方法。但UITextView的默认行为是:链接将仅在Safari应用程序中打开。我想你需要关注这个链接。如果您觉得没有帮助,请告诉我。我会帮你解决其他问题。只需在此处添加一条新注释,说明它是否有用。我一步一步地阅读和检查。但不幸的是,有时我在同一文本视图中有多个URL。因此,在链接顶部放置一个透明按钮会导致链接之间的混淆。是否可以更改textView中打开链接的默认/模式?