【问题标题】:How do I set a Custom NSFormatter to a NSTextView?如何将自定义 NSFormatter 设置为 NSTextView?
【发布时间】:2012-10-06 20:28:36
【问题描述】:

我有一个NSTextView,我有一个自定义的NSFormatter,它限制了字符串长度。但是我如何在NSTextView 上“[_textView setFormatter:customFormatter]”?我找不到如何做到这一点。
示例代码将不胜感激!

【问题讨论】:

    标签: objective-c xcode macos nstextview nsformatter


    【解决方案1】:

    无法将自定义 NSFormatter 与 NSTextView 一起使用。 (这似乎是 NSControl 的领域,NSTextField 是其中的一个子类。)

    但是,可以为您的文本视图的文本存储设置一个委托 (NSTextStorage),并实现 -textStorageWillProcessEditing:NSTextStorageDelegate 的方法);这是您可以限制用户输入的地方。您的自定义 NSFormatter 的现有代码可能适合在那里使用。

    【讨论】:

    • 谢谢,但我有一个问题:在 NSFormatter 上,我使用此代码 pastebin.com/NYFc5AnN 使最大长度为 256。如何使用 -textStorageWillProcessEditing: 实现相同的效果?
    • @PedroVieira 您可以获得文本存储中文本的长度(这是NSMutableAttributedString 的子类 - 将length 消息传递给它),并采取相应的行动。
    • 你能给我一个简单的例子吗?我没有达到我想要的。
    • @PedroVieira 我建议你实现的委托方法被调用了吗?每当用户编辑文本视图的内容时,您应该会收到它。当它被调用时,您需要将文本视图的文本存储中的文本长度与 256 进行比较,如果大于 256,则需要调整存储以使其达到最大长度。我可以带你到井边,但可以这么说,你得自己打水桶。
    • 是的,当我输入一些内容并且我正在与 256 进行比较时,它会被调用。但是如何调整存储长度?
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多