Получить NSAttributed String цвет на кран SWIFT - PullRequest
0 голосов
/ 16 мая 2019

Я использую UITextView, который содержит несколько цветов. Я использую NSMutableAttributedString для этого. Я выбираю слова, нажав на слово внутри TextView в консоли. Теперь я хочу получить цвет приписанной строки вместе со словом. Я не нашел ресурса в Swift. Все, что я нашел, было в Objective-C. Вот моя UITapGestureRecognizer функция обработчика.

@objc func myMethodToHandleTap(sender: UITapGestureRecognizer) {
    let textView = sender.view as! UITextView
    let location: CGPoint = sender.location(in: textView)
    let position: CGPoint = CGPoint(x: location.x, y: location.y)
    let tapPosition: UITextPosition? = textView.closestPosition(to: position)

    if tapPosition != nil {
        let textRange: UITextRange? = textView.tokenizer.rangeEnclosingPosition(tapPosition!, with: UITextGranularity.word, inDirection: UITextDirection(rawValue: 1))
        if textRange != nil && textColor == UIColor.red
        {
            let tappedWord: String? = textView.text(in: textRange!)
            print("Color : RED , tapped word : ", tappedWord!)
        }
        else if textRange != nil && textColor == UIColor.green
        {
            let tappedWord: String? = textView.text(in: textRange!)

            print("Color : GREEN , tapped word : ", tappedWord!)
        }
        else {
            print("empty space")
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы можете получить цвет таким образом:

if 
    let tapPosition = tapPosition,
    let characterIndex = textView.offset(from: textView.beginningOfDocument, to: tapPosition)
    let textColor = textView.attributedText.attribute(.foregroundColor, at: characterIndex, effectiveRange: nil) as? UIColor 
{
    //Do what you want with text color
}
0 голосов
/ 16 мая 2019

Если вы добавляете цвет слова программным способом, а затем проверяете диапазон слова касания и сопоставляете его с примененным диапазоном, то вы можете легко найти цвет слова, к которому прикоснулись.

textColor где вы назначаете значение перед сравнением?

Это вам поможет

Спасибо.

...