【发布时间】:2018-12-20 00:47:13
【问题描述】:
我正在尝试在我的应用中创建超链接,并且正在实施此解决方案:
let attributedString = NSMutableAttributedString(string: "Just click here to register")
let url = URL(string: "https://www.apple.com")!
// Set the 'click here' substring to be the link
attributedString.setAttributes([.link: url], range: NSMakeRange(5, 10))
self.headerDescription.attributedText = attributedString
self.headerDescription.isUserInteractionEnabled = true
self.headerDescription.isEditable = false
// Set how links should appear: blue and underlined
self.headerDescription.linkTextAttributes = [
NSForegroundColorAttributeName: UIColor.blue,
NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue,
]
但它出错了:
无法将类型“[NSAttributedStringKey : Any]”的值分配给类型“[String : Any]?”
我做错了什么?
这是我的完整代码:
//
// HeaderInfoTableViewCell.swift
// Triage App
//
// Created by Shay Vidas on 28/11/2018.
// Copyright © 2018 Shay Vidas. All rights reserved.
//
import UIKit
class HeaderInfoTableViewCell: UITableViewCell {
@IBOutlet weak var headerDescription: UITextView!
override func awakeFromNib() {
super.awakeFromNib()
let attributedString = NSMutableAttributedString(string: "Just click here to register")
let url = URL(string: "https://www.apple.com")!
// Set the 'click here' substring to be the link
attributedString.setAttributes([.link: url], range: NSMakeRange(5, 10))
self.headerDescription.attributedText = attributedString
self.headerDescription.isUserInteractionEnabled = true
self.headerDescription.isEditable = false
// Set how links should appear: blue and underlined
self.headerDescription.linkTextAttributes = [
NSForegroundColorAttributeName: UIColor.blue,
NSUnderlineStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue,
]
}
}
【问题讨论】:
-
根据您的 Swift 版本,
linkTextAttributes是一个字典,其键是NSAttributedString.Key或String。在你的情况下,它们是String,所以你需要这样做:myStringKey.rawValue。但是在更新之间您使用了旧的NSForegroundColorAttributeName(类似于“Objective-C”),所以请保持一致。 -
查看这个帖子:stackoverflow.com/questions/46314661/…,你可以使用
headerDescription.linkTextAttributes = [ NSAttributedStringKey.foregroundColor.rawValue: UIColor.blue, NSAttributedStringKey.underlineStyle.rawValue: NSUnderlineStyle.styleSingle.rawValue, ]
标签: swift uitextview