On 6 Mar 2010, at 01:00, Ulai Beekam wrote:

> 
> I have a delegate of NSTextField that uses the controlTextDidEndEditing: 
> method to do some stuff when the editing has finished.
> 
> However, there are (as far as I can imagine) two types of possible scenarios 
> under which the editing finishes: 1) the user hits return. in this case, the 
> focus stays on the text field. 2) the user presses tab or clicks someplace 
> else, in which case the text field loses focus.
> 
> My question is: What is the proper way to know *within the 
> controlTextDidEndEditing: delegate method* which of the two scenarios 
> occurred (or will occur? i suppose it has already occurred since it's a "Did" 
> method)?
> 
> This is how I'm currently doing it, and it is not working properly:
> 
> - (void)controlTextDidEndEditing:(NSNotification *)aNotification
> {
>  NSTextField *textField = [aNotification object];
>  NSTextView *fieldEditor = [[aNotification userInfo] 
> objectForKey:@"NSFieldEditor"];
>    if ([[textField window] firstResponder] == fieldEditor)
>    NSLog(@"focus lost");
>  else
>    NSLog(@"focus retained");
> }
> 
> This works only in that if the user *clicks* outside the text field, "focus 
> lost" is printed, and if the user hits return, "focus retained" is printed. 
> However, this *fails* when I tab out of the text field, in which case "focus 
> retained" is printed, which obviously indicated that my way of doing this 
> sucks.
> 
> So I'm all out of luck. Any ideas?

NSText handles this properly; when it posts an NSTextDidEndEditingNotification, 
that includes NSTextMovement as a key. I'm not sure if 
NSControlTextDidEndEditingNotification is kind enough to pass that on too, or 
if you'll have to listen out for the original notification from the field 
editor._______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to