Search code examples
cocoamacos

How to determine whether an NSSearchField/NSTextField has input focus?


How can I determine whether an NSSearchField/NSTextField has input focus?


Solution

  • The previous answer is wrong, because NSTextField / NSSearchField do not themselves become the first responder and handle edited text. Instead, they use the window's field editor, which is an NSTextView that is shared between all fields on the window (since only one of them can have focus at a time).

    You need to see if the first responder is an NSText, and if so, if the search field / text field is its delegate.

    NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
    if ([firstResponder isKindOfClass:[NSText class]] && [(id)firstResponder delegate] == mySearchField) {
        NSLog(@"Yup.");
    }