On Mar 31, 2008, at 00:29, Quincey Morris wrote:
> On Mar 30, 2008, at 23:08, K. Darcy Otto wrote:
>
>> I'm working on an application in which users enter data into a
>> table, but I need to substitute a greater-than symbol (>) for a
>> right-arrow symbol (→, unicode: 2192) as the user presses they
key
>> (or copies the text, or whatever). After looking at the docs and
>> this list, I'm not much closer to determining the best way to do
>> this (or even how to do it). So far, I have been thinking I have
>> to do something with NSWindow and the fieldEditor; perhaps setting
>> the window's field editor to be a particular NSTextView, and
>> implement some method in that text view (insertText:?) to make the
>> substitution. I take it that working with keyDown: would not be
>> the best approach. Would this be on the right track? Any help
>> would be appreciated.
>
> You could try adding a validate<Key> method for the property that
> holds the string value. In that method, take the input string and
> create a new string, replacing whatever characters you need to. Pass
> the new string back in the first parameter, and return YES from the
> method.
>
> If I haven't overlooked something obvious, this would work no matter
> whether the text was typed or pasted into the editing field.
>
> Oh -- make sure you check "Validates immediately" for the table
> column binding in IB, too.
Of course, this is only going to make the replacement happen when the
user presses return or tab. To get it to happen as soon as a
replaceable character is typed, you'd have to convince the field
editor to validate after every keystroke or editing action. So maybe
this is not the best way.