NSTextField字符集限制

时间:2013-03-18 19:52:18

标签: objective-c cocoa nstextfield

我是Xcode的新手和MacOS应用程序的编程。请帮助我。我无法理解创建限制字符集和在兼容字符(0-9,e,。)上检查NSTextField的写操作(或我不知道的事件)。我读了如何创建字符集(NSCharacterSet),但不能接下来需要什么。我想在我的NSTextField上禁止输入错误的字符。如何在Objective-C中处理NSTextField和其他事件的键盘事件?像例子。

2 个答案:

答案 0 :(得分:3)

我会在textField上放一个NSFormatter。这是可可的方式:D

textField.formatter = myFormatter;

..例如一个NSNumberFormatter或者如果需要一个自定义的

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextField_Class/Reference/Reference.html

答案 1 :(得分:1)

我在Cocoadev上发现了一条可以帮助你的帖子。 (http://lists.apple.com/archives/cocoa-dev/2006/Aug/msg01492.html

您需要注册一个通知,以便在文本发生变化时收到通知:

[[NSNotificationCenter defaultCenter] addObserver: self
    selector: @selector(textDidChange:)
    name: NSControlTextDidChangeNotification
    object: textField];

然后在textDidChange:方法(或任何你命名的方法)中,你可以修改输入。例如,要确保大写:

[[textField setStringValue: [[textField stringValue] uppercaseString]];

如果要限制位数,可以使用NSMutableString的deleteCharactersInRange:方法。如果您想限制在文本字段中找到的文本类型,可以使用带有所有允许字符的NSMutableCharacterSet,然后使用NSScanner的scanCharactersFromSet:intoString方法过滤掉不需要的字符。