UITextView

时间:2017-09-21 21:39:35

标签: swift uitextview

UITextView似乎使用了其中的第一个字符,将属性的属性作为后面任何文本的默认属性。我尝试过使用typingAttributes,但只有在键入时才能使用(粘贴和双击空格键是我很快会解释的问题)。

如果我创建提及作为第一行文本然后粘贴文本,则粘贴的文本将具有提及属性。

但是,如果我添加了文本(默认属性),然后提及,然后粘贴文本,粘贴的文本将具有默认属性。

我已经尝试重置打字属性,如果您在提及后进行输入,但无论何时粘贴或双击空格键并添加.,它都将采用任何属性。第一个角色是。

有没有办法解决这个问题?可能是一个NSAttributedString函数来覆盖UITextView上的任何方法/ var,我错过了哪些可能对我有帮助?

首先编辑:

捕获

中长于1个字符的文字
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange,
                         replacementText text: String) -> Bool

允许我返回false并自行替换文本。

然而,我无法尝试将更改从两个空格捕获到.

如果有人知道如何正确捕获它,那将非常有帮助。

1 个答案:

答案 0 :(得分:1)

正如我在编辑中所说的那样用粘贴文本来解决我的问题

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

并捕获1个字符以上的文本并使用适当的属性将其插入并返回false。

至于空格键的双击我的解决方案(目前至少)是检查

public func textViewDidChange(_ textView: UITextView)

并查看(根据selectedRange位置和两个字符返回)我们现在是否有句号和空格。如果我们这样做,我会为该位置设置默认文本属性。这可能对每个人都不起作用,因为可能存在不应将句点和空格设置为默认值的情况。目前对我来说似乎不是问题,但如果是,我会在这里发布我的工作。