1

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

4

2 回答 2

3

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

textField.formatter = myFormatter;

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

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

于 2013-03-18T20:09:06.020 回答
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 方法过滤掉不需要的字符。

于 2013-03-18T19:55:39.983 回答