防城港汽车站,yvonne buschbaum,末世谈txt下载
首先、针对uilabel中显示的多个功能标签,作出颜色标记提示。
其次、对关键字作出点击响应动作。
如图所示:
public static var hashtag = detectortype.custom(try! nsregularexpression(pattern: "#[\\u4e00-\\u9fa5a-za-z0-9]{1,}", options: []))
func matches(for regex: string, in text: string) -> [string] { do { let regex = try nsregularexpression(pattern: regex) let results = regex.matches(in: text, range: nsrange(text.startindex..., in: text)) return results.map { string(text[range($0.range, in: text)!]) } } catch let error { print("invalid regex: \(error.localizeddescription)") return [] } }
tags = commonuseclass._sharedmanager.matches(for: "#[\\u4e00-\\u9fa5a-za-z0-9]{1,}", in: model.text)
extension uigesturerecognizer { func didtapattributedtextinlabel(label: uilabel, inrange targetrange: nsrange) -> bool { let layoutmanager = nslayoutmanager() let textcontainer = nstextcontainer(size: cgsize.zero) let textstorage = nstextstorage(attributedstring: label.attributedtext!) layoutmanager.addtextcontainer(textcontainer) textstorage.addlayoutmanager(layoutmanager) textcontainer.linefragmentpadding = 0.0 textcontainer.linebreakmode = label.linebreakmode textcontainer.maximumnumberoflines = label.numberoflines let labelsize = label.bounds.size textcontainer.size = labelsize let locationoftouchinlabel = self.location(in: label) let textboundingbox = layoutmanager.usedrect(for: textcontainer) let textcontaineroffset = cgpoint(x: (labelsize.width - textboundingbox.size.width) * 0.5 - textboundingbox.origin.x, y: (labelsize.height - textboundingbox.size.height) * 0.5 - textboundingbox.origin.y) let locationoftouchintextcontainer = cgpoint(x: locationoftouchinlabel.x - textcontaineroffset.x, y: locationoftouchinlabel.y - textcontaineroffset.y) let indexofcharacter = layoutmanager.characterindex(for: locationoftouchintextcontainer, in: textcontainer, fractionofdistancebetweeninsertionpoints: nil) return nslocationinrange(indexofcharacter, targetrange) } }
if self.tags.count > 0 { var isselecttag = false var selecttag = "" for tag in self.tags { let termsrange = (self.messagetext as nsstring).range(of: tag) if gesture.didtapattributedtextinlabel(label: self.messagelabel, inrange: termsrange) { isselecttag = true selecttag = tag break } } if isselecttag { delegate?.selecttag(selecttag) return } }
转自:https://www.cnblogs.com/xjf125/p/12852743.html
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能
网友评论