如何在NSTextField输入字符时收到通知?

时间:2010-12-15 16:29:05

标签: cocoa

我的Cocoa上有点生疏,所以请耐心等术语。

我想写一些本质上是反向拼写检查的东西。如同,如果一个单词拼写正确,那么对于随机单词,它会将其更改为拼写错误的版本。无情的恶作剧在玩某人。

那么,我的主要障碍是我不知道该怎么做(主要问题,我知道)。我喜欢textedit执行动态拼写检查的方式,但我想将这种行为合并到NSTextField的通用行为中。是否有某种方法可以在将字符输入NSTextField时通知应用程序?

编辑:我的目标是在系统范围内进行此操作,因为系统中的任何NSTextField都会将此行为视为继承问题。我对这里的一些严重的黑客持开放态度。

2 个答案:

答案 0 :(得分:1)

要回答您的问题:将委托附加到NSTextField控件,并实现

- (void)controlTextDidChange:(NSNotification *)aNotification

请注意,NSTextField使用共享字段编辑器编辑文本,这是一个NSText对象。你或许可以操纵它来做你想做的事。

答案 1 :(得分:0)

我喜欢这个主意!这应该很容易做到。首先,您必须决定是否要使用NSTextFieldNSTextView。 TextEdit.app使用NSTextView,适用于更广泛的文字处理类型任务。 NSTextField更适用于较小的,格式最小的文本块。有很多方法可以解决这个问题,但我会给你一些。

对于NSTextField,将控制器对象设置为文本字段的委托,并覆盖controlTextDidChange:方法。只要用户在文本字段中键入字符,您就会收到此消息。然后,您可以修改字段的字符串以引入拼写错误的单词。

对于NSTextView,您可以激活拼写检查并使用文本视图的委托方法textView:didCheckTextInRange:types:options:results:orthography:wordCount:。您应该能够修改拼写检查的结果。