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.