【问题标题】:Default attributes for UITextViewUITextView 的默认属性
【发布时间】:2017-09-21 21:39:35
【问题描述】:

UITextView 似乎使用它的属性文本属性中的任何第一个字符作为随后任何文本的默认属性。我尝试过使用 typingAttributes,但它只在打字时有效(粘贴和双击空格键是我稍后会解释的问题)。

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

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

我已尝试重置 typingAttributes,如果您在提及之后键入,但无论何时粘贴或双击空格键并添加 .,它都会使用第一个字符的属性。

p>

有什么办法可以解决这个问题吗?可能是要覆盖的 NSAttributedString 函数或我缺少的 UITextView 上的任何方法/变量可能对我有帮助?

第一次编辑:

捕获长度超过 1 个字符的文本

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

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

然而,我被困在试图捕捉从两个空格到.的变化

如果有人知道如何正确捕捉这一点,那将非常有帮助。

【问题讨论】:

    标签: swift uitextview


    【解决方案1】:

    正如我在编辑中所说,解决我使用的粘贴文本问题

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

    并捕获超过 1 个字符的文本并使用适当的属性自行插入并返回 false。

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

    public func textViewDidChange(_ textView: UITextView)
    

    并查看(基于 selectedRange 位置和后面的两个字符)我们现在是否有句点和空格。如果我们这样做,我会为该位置放置一个默认文本属性。这可能不适用于所有人,因为在某些情况下不应该将句点和空格设置为默认值。目前这对我来说似乎不是问题,但如果是,我会在这里发布我的工作。

    【讨论】:

    • 有趣,我完全没有想到粘贴+双击有句号的问题!感谢您的跟进。很少看到有适当跟进的 SO 答案。不过,我仍然很好奇为什么这种行为在 iOS 11 中发生了变化。
    • 我认为这不是 iOS 11 特有的,而是一个不为人知的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2012-09-27
    • 2010-09-22
    • 2023-03-18
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多