Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios textView.TypingAttribute不适用于预测_Ios_Swift3_Attributes_Uitextview_Xcode8 - Fatal编程技术网

Ios textView.TypingAttribute不适用于预测

Ios textView.TypingAttribute不适用于预测,ios,swift3,attributes,uitextview,xcode8,Ios,Swift3,Attributes,Uitextview,Xcode8,我有一个文本视图,其中填充了一些默认的蓝色文本,现在我的目标是,无论我在文本中做什么编辑,它都应该是红色的。我正在使用texView.typingAttributes来实现这一点,它几乎可以很好地工作,除非我从任何蓝色的单词开始使用预测或自动更正,在这种情况下,预测或自动更正的单词仍然保持蓝色。如果我在蓝色区域之外使用预测,效果很好。还有什么我应该做的预测吗?下面是我目前用来实现这一目标的代码 func textView(_ textView: UITextView, shouldChangeT

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

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

    textView.typingAttributes[NSForegroundColorAttributeName] = UIColor.red

    return true
}

要进行更正,需要为字符串的选定范围应用颜色属性属性。它现在正在工作,添加了如下代码:

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,解决了光标定位问题并更新了相同的代码。很好用。请随时询问是否有任何疑问。。。