【问题标题】:textView.typingAttributes not working for predictiontextView.typingAttributes 不适用于预测
【发布时间】:2017-07-24 09:13:15
【问题描述】:

我有一个文本视图,其中填充了一些蓝色的默认文本,现在我的目标是,无论我在文本中进行什么编辑,它都应该是红色的。我正在使用texView.typingAttributes 来实现这一点,它几乎可以正常工作,除非我从任何蓝色的单词开始使用预测或自动更正,在这种情况下,预测或自动更正的单词仍然保持蓝色。如果我在蓝色区域之外使用预测,它工作正常。还有什么我应该做的预测吗?以下是我目前用来实现此目的的代码。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

    textView.typingAttributes[NSForegroundColorAttributeName] = UIColor.red

    return true
}

【问题讨论】:

    标签: ios swift3 attributes uitextview xcode8


    【解决方案1】:

    对于更正,您需要为选定的字符串范围应用 color 属性 属性。它现在可以工作了,添加如下代码:

    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    
        textView.typingAttributes[NSForegroundColorAttributeName] = UIColor.red
    
        let colorAttribute = [NSForegroundColorAttributeName: UIColor.red]
        textView.textStorage.addAttributes(colorAttribute, range: range)
    
            return true
        }
    

    【讨论】:

    • 这几乎可以工作,但问题是如果您在中间选择一个蓝色文本并使用预测,光标会转到其他地方。此外,选择和粘贴蓝色文本也不起作用。
    • @sonu,但是正如你所问的:如果我从任何蓝色的单词开始使用预测或自动更正,在这种情况下,预测或自动更正的单词仍然保持蓝色,现在颜色问题已经解决了。更正后的单词变成红色而不是蓝色。
    • 是的,但是如果我使用这个解决方案,它会产生一个新的光标位置问题,这是以前没有的。
    • @sonu,解决了光标定位问题并更新了相同的代码。它工作正常。如有任何疑问,请随时询问...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2015-03-11
    • 2019-09-19
    • 2013-12-19
    • 2021-03-05
    相关资源
    最近更新 更多