2016-10-17 4 views
0

아래는 제가 고치려고하는 문제입니다. 텍스트가 link 속성을 가진 속성이있는 문자열 인 textView가 있습니다. 링크를 클릭하면 다른 화면으로 이동해야합니다. 그래서, shouldInteractWithURL()에서 스크린 네비게이션을 수행하고 있는데, textView의 델리게이트 메소드입니다. 강제로 textView를 건 것을 제외하고는 모두 잘 작동합니다. 다음 페이지가 두 번로드됩니다. 즉, shouldInteractWithURL()이 강제 탭에서 두 번 호출됩니다. 내가보기 컨트롤러의 스택을 검사하여 그것을 수정하고 마지막 VC가로드하려고하는 경우, 거기에서 돌아오고 있습니다. 그러나이 외의 다른 해결책이 있는지 알고 싶었습니다. shouldInteractWithURL을 : 다음 코드는shouldInteractWithURL이 3D 터치에서 두 번 호출되었습니다.

textView.text = "" 

    guard var str = myStr else { 
     return nil 
    } 

    let linkAttribute = [NSLinkAttributeName: NSURL(string: "")!] 
    var attributedStr:NSMutableAttributedString? 
    if delay { 
     str += " " 
     attributedStr = NSMutableAttributedString(string: str) 

     let ctaStr = kSuccessStr 
     let ctaAttributedString = NSAttributedString(string: ctaStr, attributes: linkAttribute) 
     attributedStr!.appendAttributedString(ctaAttributedString) 
    } else { 
     let ctaStr = kFailedStr 
     attributedStr = NSMutableAttributedString(string: ctaStr, attributes: linkAttribute) 
    } 
    textView.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.grayColor()] 
    textView.attributedText = attributedStr 
    textView.delegate = thisTableViewDelegate 

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool 
{ 
    if let textLink = textView.text 
    { 
     if (textLink.rangeOfString(str1) != nil) || 
     (textLink.rangeOfString(str2) != nil) 
     { 
      showSignUpForm(self) 
     } 
     else 
     { 
      showSuccessfulForm() 
     } 
    } 

    return true 
} 

답변

1

를 사용하여 텍스트 뷰를 니펫 inRange : 상호 작용 : 대신. 상호 작용이! = UITextItemInteractionInvokeDefaultAction인지 확인하고 NO를 반환합니다.

는 참조 https://developer.apple.com/reference/uikit/uitextviewdelegate/1618606-textview?language=objc

+0

텍스트 뷰 : shouldInteractWithURL : inRange : 상호 작용 : –

+0

를 더 이상 사용되지 않습니다 내가이 문제를 해결하는 방법을 볼 수 없습니다 상호 작용 – markhorrocks

+0

에 대한 유효한 값을 찾을 수 없습니다. 델리게이트 메서드는 여전히 두 번 호출됩니다. 한 번은 상호 작용이'.preview'이고, 다른 하나는'.presentActions'와 상호 작용합니다. 나는 이것을 iOS 자체의 버그라고 생각한다. – matt