아래는 제가 고치려고하는 문제입니다. 텍스트가 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
}
텍스트 뷰 : shouldInteractWithURL : inRange : 상호 작용 : –
를 더 이상 사용되지 않습니다 내가이 문제를 해결하는 방법을 볼 수 없습니다 상호 작용 – markhorrocks
에 대한 유효한 값을 찾을 수 없습니다. 델리게이트 메서드는 여전히 두 번 호출됩니다. 한 번은 상호 작용이'.preview'이고, 다른 하나는'.presentActions'와 상호 작용합니다. 나는 이것을 iOS 자체의 버그라고 생각한다. – matt