On Apr 22, 2009, at 3:57 PM, Ulai Beekam wrote:

To elaborate, when not using bindings, the default behavior of text fields with a number formatter is that when a user tries to enter "abc" in it, the text field refuses to lose focus and makes a beeping sounds.

However, when the text field's value binding has been set, a sheet is shown, which I think is a bad user experience.

That's because no one is handling the error. Bindings gives you some automatic error support. Otherwise you have to handle the error yourself. This is well documented. If you don't like the experience, then change it.

In fact it would be even better to just disallow entering of invalid characters in the first place. But such a method would have to work even if the text field's value binding is set.

I agree with you that having some sort of built-in support for entry filters would be great (I would add length limiters as well). I think we had this back in the Mac toolbox days, if I am remembering properly.

Anyway, there are two different issue to consider. One is validation, and the other is custom editor behavior. They are really two different problems, although there is overlap.

My problem is that when I type some invalid stuff in the text field, such as some letters "abc", I don't get a beep (which is the normal behaviour and the one I want), but I get some sheet popping up saying "Formatting Error". I don't want this sheet. I want the beep like usual. How can I get rid of this sheet behaviour that the bindings is causing? And why is it even causing it?


Because that's how formatters work. Getting rid of the sheet is nontrivial if you allow the formatter or bindings to do validation. Also, your formatter (or your model object, using key-value validation) can provide a more sensible error message if you choose.

Second question: How can I make my text field just disallow entering of invalid characters in the first place (and producing beep when it is tried)? I want, as you probably guessed, a method that is compatible with bindings.


You can use the formatter to check data on the fly, but you have to control the undo manager or you will get exceptions on undo. You can also have a custom field editor, for finer grained control. Both of these have decent documentation. I would be surprised if no-one has a framework that offers some of this behavior.

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"

_______________________________________________

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