2017-02-21 40 views
0

shouldInteractWith url textview委託沒有在ios9中調用,但我也實現了ios9委託方法。代碼如下。如果有人知道這個問題修復了什麼,那麼請讓我知道。在此先感謝您的幫助shouldInteractWith url textview委託沒有在ios9中調用,但在ios10中工作?

import UIKit 

class UrNestTermsView: UIView { 

// Outlets 
@IBOutlet weak var contentView: UIView! 
@IBOutlet weak var termsTextView: UITextView! 
@IBOutlet weak var termsUrNestCheckBox: UrNestCheckBox! 
@IBOutlet weak var subscribeUrNestCheckBox: UrNestCheckBox! 
@IBOutlet weak var subscribeTextView: UITextView! 

fileprivate let fontOfTerms = UIFont.systemFont(with: 10) 
fileprivate let labelTextColor = UIColor(colorLiteralRed: 102/255, green: 110/255, blue: 111/255, alpha: 1) 

override func awakeFromNib() { 
    super.awakeFromNib() 
    self.setUp() 
} 
} 

extension UrNestTermsView: UITextViewDelegate { 

func setUp() { 
    self.subscribeTextView.textColor = labelTextColor 
    self.subscribeTextView.font = fontOfTerms 
    self.setUpTextView() 
} 

func setUpTextView() { 

    // You must set the formatting of the link manually 
    let linkAttributeTermsOfService = [ 
     NSLinkAttributeName: NSURL(string: "https://www.apple.com")!, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, 
     NSForegroundColorAttributeName: labelTextColor 
     ] as [String : Any] 
    let linkAttributePolicy = [ 
     NSLinkAttributeName: NSURL(string: "https://www.google.com")!, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, 
     NSForegroundColorAttributeName: labelTextColor 
     ] as [String : Any] 
    let linkAttributePaymentsTermsOfService = [ 
     NSLinkAttributeName: NSURL(string: "https://www.amazon.com")!, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, 
     NSForegroundColorAttributeName: labelTextColor 
     ] as [String : Any] 
    let linkAttributeGuestRefundPolicy = [ 
     NSLinkAttributeName: NSURL(string: "https://www.yahoo.com")!, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, 
     NSForegroundColorAttributeName: labelTextColor 
     ] as [String : Any] 
    let linkAttributeHostGuaranteeTerms = [ 
     NSLinkAttributeName: NSURL(string: "https://www.assembla.com")!, 
     NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, 
     NSForegroundColorAttributeName: labelTextColor 
     ] as [String : Any] 


    let attributedString = NSMutableAttributedString(string: kTermsAndPolicy) 

    // Set the 'click here' substring to be the link 
    attributedString.setAttributes(linkAttributeTermsOfService, range: NSMakeRange(33, 16)) 
    attributedString.setAttributes(linkAttributePolicy, range: NSMakeRange(51, 6)) 
    attributedString.setAttributes(linkAttributePaymentsTermsOfService, range: NSMakeRange(59, 25)) 
    attributedString.setAttributes(linkAttributeGuestRefundPolicy, range: NSMakeRange(102, 19)) 
    attributedString.setAttributes(linkAttributeHostGuaranteeTerms, range: NSMakeRange(127, 20)) 


    attributedString.addAttribute(NSFontAttributeName, value: fontOfTerms, range: NSMakeRange(0, attributedString.length-1)) 
    attributedString.addAttribute(NSForegroundColorAttributeName, value: labelTextColor, range: NSMakeRange(0, attributedString.length-1)) 

    self.termsTextView.delegate = self 
    self.termsTextView.attributedText = attributedString 

    let attributedStringOfSubscribe = NSMutableAttributedString(string: kSubscribe) 
    attributedStringOfSubscribe.addAttribute(NSFontAttributeName, value: fontOfTerms, range: NSMakeRange(0, attributedStringOfSubscribe.length)) 
    attributedStringOfSubscribe.addAttribute(NSForegroundColorAttributeName, value: labelTextColor, range: NSMakeRange(0, attributedStringOfSubscribe.length)) 

    self.subscribeTextView.delegate = self 
    self.subscribeTextView.attributedText = attributedStringOfSubscribe 
} 

//For iOS 7...9 
@available(iOS, deprecated: 10.0) 
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool { 
    return true 
} 

@available(iOS 10.0, *) 
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { 
    return true 
} 

} 
+0

嗨,你找出解決方案呢? – HungCLo

+0

嗨,我仍然沒有找到解決方案 – Sakthimuthiah

回答

2

試試這個:

@available(iOS, deprecated: 10.0) 
func textView(_ textView: UITextView, shouldInteractWith url: URL, in characterRange: NSRange) -> Bool { 
    return true 
} 

//For iOS 10 
@available(iOS 10.0, *) 
func textView(_ textView: UITextView, shouldInteractWith url: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { 
    return true 
} 
+0

感謝您的幫助,我已經嘗試過但不適用於ios9 – Sakthimuthiah

相關問題