textView에 NSMutableAttributedString을 추가하고 있는데, tappableString을 클릭하면 새 vc를 표시하려고합니다. vc가 제공되지 않고 있으며 내가 잘못 가고있는 곳을 파악할 수 없습니다.Swift iOS -NSMutableAttributedString ViewController가 표시되지 않습니까?
textView의 위임자를 설정하고 textView의 을 사용하고 URL의 절대 문자열이 NSLinkAttributeName's
"doSomething"값과 일치하지만 VC가 나타나지 않는지 확인합니다.
어디에서 잘못 생각합니까?
class FirstController: UIViewController, UITextViewDelegate {
fileprivate let textView: UITextView = {
let textView = UITextView()
textView.translatesAutoresizingMaskIntoConstraints = false
textView.isEditable = false
textView.isSelectable = true
textView.textAlignment = .center
textView.isScrollEnabled = true
return textView
}()
override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
configureTextView()
}
override func viewDidLayoutSubviews() {
textView.setContentOffset(.zero, animated: false)
}
func configureTextView(){
//textView anchors are set
let firstPlainSent = "Read this first.\n"
let secondPlainSent = "Read this second.\n"
plainSentAttr = [NSFontAttributeName: UIFont(name: "Helvetica", size: 17)!, NSForegroundColorAttributeName: UIColor.black]
let firstSent = NSAttributedString(string: firstPlainSent, attributes: plainSentAttr)
let secondSent = NSAttributedString(string: secondPlainSent, attributes: plainSentAttr)
let mutableAttributedString = NSMutableAttributedString()
mutableAttributedString.append(firstSent)
mutableAttributedString.append(secondSent)
let tappableString = NSMutableAttributedString(string: "Click here to present the SecondVC\n\n")
tappableString.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica", size: 17)!, range: NSMakeRange(0, (tappableString.length)))
tappableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSMakeRange(0, (tappableString.length)))
tappableString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSMakeRange(0,tappableString.length))
tappableString.addAttribute(NSUnderlineColorAttributeName, value: UIColor.blue, range: NSMakeRange(0, tappableString.length))
tappableString.addAttribute(NSLinkAttributeName, value: "doSomething", range: NSMakeRange(0, (tappableString.length)))
mutableAttributedString.append(tappableString)
textView.attributedText = mutableAttributedString
}
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
// I also tried URL.scheme
if URL.absoluteString == "doSomething"{
let secondVC = SecondController()
let navVC = UINavigationController(rootViewController: secondVC)
present(navVC, animated: true, completion: nil)
return false
}
return true
}
}
새 프로젝트에 코드를 추가했는데 새로운 경우 VC가 나타납니다! 코드의 다른 부분에 문제가 있습니까? –
@ AndréSlotta는 도움을 주셔서 감사합니다. 제가 틀린 것을 알 수있는 것은 없으며 텍스트보기와 텍스트를 볼 수 있기 때문에 앵커가 괜찮습니다. 그것은 당신이 아닌 나에게 맞지 않는 것이 이상한가? 다시 확인해 볼게. –
@ AndréSlotta 문제는 이전 버전의 textView 메소드를 사용했기 때문입니다. 도와 주셔서 감사합니다! –