我希望在UILabel被点击时得到这个词。我已尝试将它与TextKit一起使用。这就是我所做的:
为我的标签(attLabel)指定了一个属性字符串:" Rachel 已请求加入群组"。此外,我在标签上添加了一个点按手势。 nameRange是 Rachel 的范围。 现在,在手势动作中:
@IBAction func didTapLabel(sender: UITapGestureRecognizer) {
let textStorage = NSTextStorage(attributedString: attLabel.attributedText!)
let layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)
let textContainer = NSTextContainer(size: attLabel.frame.size)
textContainer.lineFragmentPadding = 0
layoutManager.addTextContainer(textContainer)
let touchPoint = sender.locationOfTouch(0, inView: attLabel)
var glyphRange:NSRange = NSRange()
layoutManager.characterRangeForGlyphRange(nameRange!, actualGlyphRange: &glyphRange)
let glyphRect = layoutManager.boundingRectForGlyphRange(glyphRange, inTextContainer: textContainer)
if CGRectContainsPoint(glyphRect, touchPoint) {
NSLog("Contains name")
}
}
但现在的问题是,当我点击" h"雷切尔,它没有打印出这个名字。但如果我点击" R"," a"或" c"它打印出名称。 那么我该怎么做才能得到正确的词?同样,我希望在点击组时执行操作。此外,当按下该单词时,我想要突出显示该单词。