2015-01-23 4 views
2

Я пытаюсь открыть ссылку, которую мой UITextView распознает в приложении. Для этого я использую метод UITextView delegateshouldInteractWithURL.Открыть ссылку в UITextView в приложении

Мой код, похоже, отлично работает для загрузки приложения в приложении; однако он все еще открывает ссылку в Safari в дополнение к приложению. Есть ли способ исправить это?

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 

    println("called") 
    let webViewController = WebViewController()   
    webViewController.urlToLoad = URL 

    if let navigationController = navigationController { 
     println("navigating") 
     navigationController.pushViewController(webViewController, animated: true) 
     return true 
    } 
    else { 
     return false 
    } 
} 

Обратите внимание, что WebViewController только пользовательский класс, который я сделал, который отображает UIWebView как весь экран. Он имеет одно свойство urlToLoad, которое является адресом, который будет загружен в UIWebView.

Я также присвоил delegateUITextViewUIViewController, реализующий эту функцию делегата.

Кто-нибудь знает, как заставить приложение остановить открытие сафари?

ответ

5

Функция shouldInteractWithURL должна возвращать true только в том случае, если ссылка должна быть открыта в Safari. Если вы сами обрабатываете ссылку, вы должны вернуть false. Проверьте измененную строку в коде ниже.

Вы также можете использовать дополнительные цепочки вместо если условие вызвать pushViewController

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool { 

    let webViewController = WebViewController()   
    webViewController.urlToLoad = URL 

    navigationController?.pushViewController(webViewController, animated: true) 

    return false // Changed line. 
} 
Смежные вопросы