【问题标题】:Limit NSTextView to digits only将 NSTextView 限制为仅数字
【发布时间】:2017-05-10 12:34:47
【问题描述】:

如何将 NSTextView 限制为仅数字? NSFormatter 不适用于 NSTextView,我在 NSTextStorage/NSTextContainer 上也找不到任何选项。

【问题讨论】:

    标签: cocoa nstextview


    【解决方案1】:

    创建NSTextView 的子类并覆盖

    - (void)insertText:(id)string replacementRange:(NSRange)replacementRange
    

    从string 中去除非数字并调用super。

    覆盖

    - (BOOL)readSelectionFromPasteboard:(NSPasteboard *)pboard type:(NSString *)type
    

    捕捉粘贴和丢弃。

    【讨论】:

      【解决方案2】:

      你可以响应委托方法

      textView:shouldChangeTextInRange:replacementString: 然后检查输入的内容是否为数字(为此使用字符集)。如果是数字,返回YES;如果没有,返回NO。

      或者可能只将键盘类型更改为数字。

      【讨论】:

      • 这会破坏复制和粘贴,与使用格式化程序的体验相反,您可以使用规范化字符串替换。
      • 是的,我在发布答案后意识到它可能不适用于复制和粘贴。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多