开发者

How to get notification whenever a character is inputted into NSTextField?

开发者 https://www.devze.com 2023-01-30 13:26 出处:网络
I\'m a little rusty on my Cocoa, so bear with me on t开发者_JAVA百科erminology and such. I want to write something that is essentially a reverse spell checker. As in, if a word is spell correctly, t

I'm a little rusty on my Cocoa, so bear with me on t开发者_JAVA百科erminology and such.

I want to write something that is essentially a reverse spell checker. As in, if a word is spell correctly, then for random words it changes it to a misspelled version. Harmless prank to play on someone.

So then, my main hitch is that I have no idea how to do this (major problem, I know). I like the way that textedit performs on-the-fly spellchecking, but I'd like to incorporate that sort of behavior into the generic behavior of the NSTextField. Is there some way for an application to be notified whenever a character is input into an NSTextField?

EDIT: My aim is to make this system-wide, as in any NSTextField in the system would get this behavior as a matter of inheritance. I'm open to some serious hacking here.


To answer your question: attach a delegate to the NSTextField control, and implement

- (void)controlTextDidChange:(NSNotification *)aNotification

Note that NSTextField uses the shared field editor to edit text, which is a NSText object. You might be able to manipulate that to do what you want.


I like the idea! This should be fairly easy to do. First you have to decide if you want to use NSTextField or NSTextView. TextEdit.app uses NSTextView which is appropriate for more extensive word processing-type tasks. NSTextField is more for smaller, minimally-formatted chunks of text. There's lots of ways to tackle this, but I'll give you a couple.

For NSTextField, set your controller object to be the delegate for the text field and override the controlTextDidChange: method. Whenever the user types a character into the text field, you'll get this message. You can then modify the field's string to introduce the misspelled word.

For NSTextView, you can activate spell checking and use the text view's delegate method textView:didCheckTextInRange:types:options:results:orthography:wordCount:. You should be able to modify the results of the spell check.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号