我需要制作"使用条款"在蓝色下面的字符串中,让它响应一次点击。我不想使用按钮,所以如何在UILabel中执行此操作? 字符串:点按“下一步”并继续,即表示您同意使用条款
代码我试过但失败只是文本颜色变化:
var myMutableString = NSMutableAttributedString()
myMutableString = NSMutableAttributedString(string: self.termsLabel.text! as String, attributes: [NSFontAttributeName:UIFont(name: self.termsLabel.font.fontName, size: self.termsLabel.font.pointSize)!])
myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSRange(location:self.termsLabel.text!.characters.count - 12,length:12))
self.termsLabel.attributedText = myMutableString
答案 0 :(得分:1)
不要使用UILabel。使用UITextField或UITextView,并将属性文本安装到其中,包括链接。然后设置委托方法来检测&回应链接。您需要实现UITextViewDelegate
方法
func textView(UITextView,
shouldInteractWith: URL,
in: NSRange,
interaction: UITextItemInteraction)
配置链接的最简单方法之一是将RTF文件的内容加载到字段中。
我在GitHub上有一个名为DatesInSwift的演示项目,该项目创建可点击的链接,触发调用应用程序中URL的自定义URL。
该项目使用UITextView的扩展,它将@IBInspectable属性RTF_Filename添加到UITextView字段。您所要做的就是将文本视图的RTF_Filename属性设置为您需要加载的RTF文件的文件名。
看起来我的项目是为Swift 2编写的,并使用了旧版本的UITextViewDelegate方法,该方法被称为
func textView(_ textView:UITextView, shouldInteractWithURL URL:Foundation.URL, inRange characterRange:NSRange) - >布尔
答案 1 :(得分:0)
我得出的结论是,我无法得到我想要的内容,因此我将文本放在一个按钮中并添加了此代码
let mainText = "By tapping Next and continuing you agree to the Terms Of Use"
let attributeText = "Terms Of Use"
let range = (mainText as NSString).range(of: attributeText)
let attributedString = NSMutableAttributedString(string:mainText)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: range)
self.termsLabel.attributedText = attributedString
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.goToTOSView))
tapGesture.numberOfTapsRequired = 1
self.termsLabel.isUserInteractionEnabled = true
self.termsLabel.addGestureRecognizer(tapGesture)