我想在我的应用中这样做:
标签如下:用户名 评论
我不知道如何在标签中添加“按钮”;我找到了这个库,但我不确定它会起作用吗? https://github.com/optonaut/ActiveLabel.swift
也许通过为第一个单词创建正则表达式来使用它?你觉得怎么样?
答案 0 :(得分:7)
对于这种情况,我宁愿使用UILabel
,而不是将其添加为UITextView
组件,因为它具有dataDetectorTypes属性:
在文本视图中转换为可点击URL的数据类型。
您可以使用此属性指定数据类型(电话号码, 应该自动转换为网址的 http链接等) 在文本视图中。点按时,文本视图将打开该应用程序 负责处理URL类型并将URL传递给它。 请注意 如果文本视图的isEditable属性,则不会发生数据检测 设置为true 。
因此,您可以将其实现为:
// as mentioned in the documentation, make sure to let it be uneditable:
textView.isEditable = false
textView.dataDetectorTypes = .link
对于您的情况,我认为它应该是.link
。我还建议检查UIDataDetectorTypes的其他选项。
答案 1 :(得分:3)
使用活动标签https://github.com/optonaut/ActiveLabel.swift
制作名为UILabel
label
let customType = ActiveType.custom(pattern: "\\sjohncena\\b") //Looks for "supports"
label.enabledTypes.append(customType3)
label.handleCustomTap(for: customType) { self.alert("Custom type", message: $0) }
func alert(_ title: String, message: String) {
let vc = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
vc.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil))
present(vc, animated: true, completion: nil)
}
其中johncena
是可点击的字符串。
见https://github.com/optonaut/ActiveLabel.swift/blob/master/ActiveLabelDemo/ViewController.swift
答案 2 :(得分:2)
您可以使用TTTAttributedLabel在UILabel中制作特定的部分或单词。
例如
label.text = @"Fork me on GitHub! (https://github.com/mattt/TTTAttributedLabel/)"; // Repository URL will be automatically detected and linked
NSRange range = [label.text rangeOfString:@"me"];
[label addLinkToURL:[NSURL URLWithString:@"http://github.com/mattt/"] withRange:range];
除了超链接之外,您还可以将自定义链接添加到特定部分或单词,并且该单词变为可点击,并且在点击该单词委托方法didSelectLinkWithURL被调用时,您可以检查该函数内的该链接
(void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
NSLog(@"link %@", [url absoluteString]);
NSLog(@"whole label %@", label);
}