2017-05-31 47 views
0

我有一些應用程序與一些表視圖控制器。在每個單元格的最後一箇中,我有不同的網址。然後我決定插入一個SafariVC,但是發生的事情就是它像是一個FirstResponder。意外的SafariViewController反應

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

手錶後,GIF以上,我有兩個疑惑:

1日。當我進入Page3時,它會自動打開SafariViewController。我如何解決它?

2st。當我點擊url時,它不會打開SafariViewController。我需要做些什麼來解決它?

回答

0

對於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 
} 
+0

我想我需要'websiteTextView.text = goP3.website',因爲它使文本顯示在textView中。我不認爲一個按鈕會工作。因爲有時我在同一個textView中有3或4個URL。對不起,我忘了解釋這個bafore。你有另外一個建議嗎? –

+1

是的,有不同的方法。但是UITextView的默認行爲是:鏈接將僅在Safari應用程序中打開。 我認爲你需要關注這個鏈接。如果你覺得沒有幫助,那就讓我知道。我會幫助你解決其他問題。只需在這裏添加一條新評論,它有幫助與否。 https://stackoverflow.com/questions/17278169/ios-add-button-over-nsattributedstring – krunal

+0

我閱讀並逐步檢查。但不幸的是,有時我在同一個textView中有多個URL。因此,在鏈接上放置透明按鈕會導致鏈接混淆。是不是有可能改變textView中的開放鏈接的默認/模式? –