2015-01-23 18 views
2

UITextView이 앱 내에서 인식하는 링크를 열려고합니다. 이를 달성하기 위해 UITextView delegate 방법 shouldInteractWithURL을 사용하고 있습니다.앱 내의 UITextView에서 링크 열기

내 코드가 URL의 앱로드에 제대로 작동하는 것 같습니다. 그러나 앱 내에서 Safari의 링크는 계속 열리고 있습니다. 이 문제를 해결할 방법이 있습니까? WebViewController 내가 전체 화면으로 UIWebView을 표시하는 만든 단지 사용자 정의 클래스이다

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 
    } 
} 

참고. 그것에는 UIWebView에로드 할 URL 인 하나의 속성 urlToLoad이 있습니다.

또한 UITextViewdelegate을이 위임 기능을 이미 구현 한 UIViewController에 할당했습니다.

앱이 사파리를 열지 못하게하는 방법을 아는 사람이 있습니까?

답변

5

shouldInteractWithURL 함수는 Safari에서 링크를 열어야 만 true을 반환해야합니다. 링크를 직접 처리하는 경우 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. 
}