Re: NSFormatter interfering with bindings continuous update?
Re: NSFormatter interfering with bindings continuous update?
- Subject: Re: NSFormatter interfering with bindings continuous update?
- From: Joe Wildish <email@hidden>
- Date: Thu, 28 Jun 2007 02:02:33 +0100
Apologies for not responding earlier. I have been playing with my
Mail rules and it was not bought to my attention.
Thanks for the link - I have to admit that I had not spotted that,
although it is buried deep within the documentation, so perhaps not
surprising. I've since been forced to move onto other areas of the
app in question, but if I do find a solution I'll post back to this
list. I'd hate to have to drop the binding just for the sake of the
formatter, but it might be the best of a bad situation...
Regards,
-Joe
On 25 Jun 2007, at 23:40, Lee Ann Rucker wrote:
Funny you should ask; I was just working on the exact same problem,
and having the same results.
Hit google and found that in http://developer.apple.com/
documentation/Cocoa/Conceptual/CocoaBindings/Concepts/MessageFlow.html
12. If the view has an NSFormatter attached to it, the value is
formatted by the NSFormatter instance. Proceed to Step 17.
13. If the controller-model binding specifies a value transformer
the entire model is transformed using the transformedValue: method.
14.The controller generates a key-value observing message, mapping
the key path to the selection. This generates the same type of key-
value observing change notification that would result in replacing
the content object. Proceed to Step 7.
15.If the binding specifies a placeholder for the view-controller
binding for the value marker it is used in Step 16. If no custom
placeholder value is specified as part of the binding, and a custom
default placeholder has been set for the view class and this
particular binding, it is used in Step 16. Otherwise, flow returns
to Step 11.
.An application can assign a custom default placeholder for a class
and binding combination using the NSPlaceholders class method
setDefaultPlaceholder:forMarker:withBinding:.
16.The placeholder value is set for the view using the
setPlaceholderString: or setPlaceholderAttributedString: method.
17. The updated value is displayed in the user interface.
So it looks like it's intentionally skipping the steps we want.
This is very annoying. I tried NSValueTransformer, but adding that
to an editable NSTextField makes it non-editable.
On Jun 21, 2007, at 3:25 AM, Joe Wildish wrote:
All,
I have a custom subclass of NSFormatter attached to an NSTextField
(done programmatically). The text field is bound and configured to
"Continuously Update Values". The behaviour I am getting is that
the first time a change is made to the field, the setter method
gets called as you would expect. However, all subsequent changes
to the field do not trigger the setter method - the next time it
is called is when focus is moved away from the control.
My formatter isn't doing too much, but I stripped it down to the
bare minimum anyway:
- (NSString *)stringForObjectValue:(id)obj {
return [NSString stringWithString:obj];
}
- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string
errorDescription:(NSString **)error {
* obj = [NSString stringWithString:string];
return YES;
}
Even with this formatter, the behaviour is still as described. If
I *don't* attach the formatter, the binding works as you would
expect. I would be grateful if someone might be able to point out
what I'm doing wrong.
Cheers,
-Joe
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden