iOS的SWIFT:TextView的链接到其他视图
我试图让一个TextView有像这样的一些测试:iOS的SWIFT:TextView的链接到其他视图
信用评级机构等enim存有。 Nullam rhoncus euismod nisi在convallis。 Etiam accumsan libero odio,eget malesuada ligula bibendum venenatis。
其中的链接带给你的其他的ViewController ...我想我应该用属性文本来做到这一点,但我真想不通怎么...
其他的解决办法是使用标签包围的按钮,但它不是优雅的...
有帮助吗?
使用UITextView
委托方法
textView(_:shouldInteractWith:in:interaction:)
您可以在此方法中,你需要理清的深层链接到另一个视图 - 控制检查URL。此外,对于这种情况,请从此方法返回false。
如果还可以从应用程序外部打开URLS,则可能需要查看iOS中提供的Deeplink解决方案以获得更好的管理,并且还会为用户提供深入链接功能。
的检测,以及如何添加从uistoryboard的链接? –
@TheMiotz:链接可以添加到属性字符串中。看[这里](https://*.com/questions/21629784/how-to-make-a-clickable-link-in-an-nsattributedstring-for-a)。但我不知道如何在故事板/笔尖中完成。 –
您可以检查URL被按下,并出示您的视图控制器
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
{
if let urlStr = request.url?.absoluteString
{
if (urlStr.lowercased().contains("yourURL"))
{
//go to your view controller
return true
}
}
return false
}
您可以使用现有的有源标签框架的工作,我在github上,因为我用的是同为实现我的目标,这是工作细
https://github.com/optonaut/ActiveLabel.swift
例
func setupAgreement() {
let customType1 = ActiveType.custom(pattern: "\\sterms of service\\b") //Looks for "are"
let customType2 = ActiveType.custom(pattern: "\\sprivacy policy\\b") //Looks for "it"
let customType3 = ActiveType.custom(pattern: "\\scookie use\\b") //Looks for "supports"
userAgreementLabel.enabledTypes.append(customType1)
userAgreementLabel.enabledTypes.append(customType2)
userAgreementLabel.enabledTypes.append(customType3)
userAgreementLabel.customize { (label) in
label.text = "UserAgreement".localized
label.numberOfLines = 0
label.lineSpacing = 4
label.textColor = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 1)
//Custom types
label.customColor[customType1] = Constant.AppColor.blueColor
label.customSelectedColor[customType1] = Constant.AppColor.blueColor
label.customColor[customType2] = Constant.AppColor.blueColor
label.customSelectedColor[customType2] = Constant.AppColor.blueColor
label.customColor[customType3] = Constant.AppColor.blueColor
label.customSelectedColor[customType3] = Constant.AppColor.blueColor
label.configureLinkAttribute = { (type, attributes, isSelected) in
var atts = attributes
switch type {
case customType1:
atts[NSFontAttributeName] = UIFont(name: self.userAgreementLabel.font.fontName, size: 15.0)
case customType2:
atts[NSFontAttributeName] = UIFont(name: self.userAgreementLabel.font.fontName, size: 15.0)
case customType3:
atts[NSFontAttributeName] = UIFont(name: self.userAgreementLabel.font.fontName, size: 15.0)
default:()
}
return atts
}
label.handleCustomTap(for: customType1, handler: { (value) in
self.load(cms: .terms)
})
label.handleCustomTap(for: customType2, handler: { (value) in
self.load(cms: .privacy)
})
label.handleCustomTap(for: customType3, handler: { (value) in
self.load(cms: .cookie)
})
}
}
// func navigateToWebView() {
// let controller = self.storyboard?.instantiateViewController(withIdentifier: Constant.StoryBoardIdentifier.webViewController)
// self.present(controller!, animated: true, completion: nil)
//
// }
func load(cms: CMS) -> Void {
let cmsController: CMSViewController = UIStoryboard(storyboard: .setting).initVC()
cmsController.cms = cms
show(cmsController, sender: cmsController.classForCoder)
}
看到此HTTPS:/ /*.com/questions/995219/how-to-make-uitextview-detect-links-for-website-mail-and-phone-number –
nop,与我试图访问网络的链接.. 。但只是到另一个视图 –
使用'shouldInteractWith'并处理您的链接 –