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
}
}
you must check Selectable
in storyboard or do it in code :
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
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With