使用TextKit点击UILabel时获取文本

时间:2016-03-01 14:43:01

标签: ios swift uilabel core-text textkit

我希望在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"它打印出名称。 那么我该怎么做才能得到正确的词?同样,我希望在点击时执行操作。此外,当按下该单词时,我想要突出显示该单词。

0 个答案:

没有答案