【发布时间】:2015-09-16 00:31:33
【问题描述】:
我有一个NSTextField 和一个NSNumberFormatter 来限制输入数字,但它不允许我输入连字符来输入负数(即使在将“最小值”设置为“-1,000”之后)。
我可以将“-1”复制/粘贴到字段中并以编程方式设置其值,但用户不能输入连字符。
有没有办法允许这样做?
谢谢。
PS,这是我根据 Nishant 的以下建议尝试的自定义格式化程序(没有成功):
import Cocoa
class CustomNumberFormatter: NSNumberFormatter {
override func isPartialStringValid(partialStringPtr: AutoreleasingUnsafeMutablePointer<NSString?>,
proposedSelectedRange proposedSelRangePtr: NSRangePointer, originalString origString: String,
originalSelectedRange origSelRange: NSRange, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>) -> Bool {
return true
}
}
【问题讨论】:
-
如果我有相关的代码可以发布,我可能会有答案。为 NSTextField 及其 NSNumberFormatter 发布 XML 标记是没有意义的:它们都是通过 XCode 的界面构建器配置的。
-
您可以发布界面生成器的屏幕截图。
-
首先,准确描述您是如何添加数字格式化程序的。其次描述(或显示)all 的数字格式化程序属性设置。最后,您所说的“它不会让我输入连字符”是什么意思?当你尝试时究竟会发生什么?哔?警告对话框?没有?顺便说一句,我假设当您说“连字符”时,您的意思是键盘上的标准连字符减号键。在 Unicode 中,“连字符”表示不同的意思。
-
这就是我所做的:从对象库中拖动一个“带有数字格式化程序的文本字段”,将其放到一个视图中,在 MainMenu 的文档大纲中展开文本字段 > 文本字段单元格 > 数字格式化程序。 xib,在属性检查器中将最小值设置为“-1,000”。我意识到文字处理器将连字符变成的键与上面带有下划线的键之间存在差异:我说的是连字符/破折号表示减号。它不会让我输入那个字符。
-
你所描述的对我来说很好。
标签: swift cocoa nstextfield nsnumberformatter nsformatter