1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

Which delegate method I should use when I clicked a textfield?

Discussion in 'Mac Programming' started by xiaohuli170, Mar 25, 2009.

  1. macrumors newbie

    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?
  2. Moderator emeritus


    NSTextFields don't by default handle clicking - that's what buttons are for :)

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

    Sorry , I don't know what your means is . can you explain your answer in details.Thanks a lot.
  4. macrumors 6502a


    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.

Share This Page