PDA

View Full Version : Which delegate method I should use when I clicked a textfield?




xiaohuli170
Mar 25, 2009, 04:39 AM
When I clicked on the textfield,I want to open a panel. I think that I should use a delegate method to respond the clicked event. I found that the method - (void)textDidBeginEditing:(NSNotification *)aNotification not work , and then the method - (void)controlTextDidBeginEditing:(NSNotification *)aNotification worked ,but I found this method worked when I edited the textfield not to cliked it ,why? and that when I edited the textfield again ,This method not to work ,why?



kainjow
Mar 25, 2009, 12:54 PM
NSTextFields don't by default handle clicking - that's what buttons are for :)

If you want this behavior, subclass it and override mouseDown.

xiaohuli170
Mar 25, 2009, 09:53 PM
Sorry , I don't know what your means is . can you explain your answer in details.Thanks a lot.

GorillaPaws
Mar 26, 2009, 12:00 AM
Sorry , I don't know what your means is . can you explain your answer in details.Thanks a lot.

What he's saying is that the behavior you're looking for (opening a panel when clicking on a NSTextField) isn't something NSTextFields are really designed to do. The typical pattern is to use an NSButton to bring up a panel. If you really need this behavior to work in this manner then you can subclass the NSTextField and override the mouseDown method in your own custom class to bring up your panel instead of what the normal behavior of that method is (selecting the field--I'm assuming).

Edit: Typically, it's a bad idea to alter the default behaviors of standard UI elements. Users expect things to happen in a certain way when they interact with the GUI. Violating those expectations can lead to confusion and possibly even concern that your app is broken/bugged. In other words, you might want to re-think your design decisions a bit to see if this is the best implementation.