简体   繁体   中英

shouldInteractWith url textview delegate not called in ios9 but working in ios10?

shouldInteractWith url textview delegate not called in ios9 but i have implemented ios9 delegate method also. Code is below. If someone knows whats the issue fix then please let me know. thanks in advance for any help

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
 }

}

您必须在故事板中检查Selectable或在代码中进行:

textView.isSelectable = true

try this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM