Как определить, имеет ли фокус ввода NSSearchField / NSTextField? - PullRequest
11 голосов
/ 14 мая 2011

Как определить, имеет ли фокус ввода NSSearchField / NSTextField?

Ответы [ 2 ]

29 голосов
/ 14 мая 2011

Предыдущий ответ неверен, потому что NSTextField / NSSearchField сами не становятся первым респондентом и обрабатывают отредактированный текст.Вместо этого они используют редактор полей окна, который представляет собой NSTextView, который используется всеми полями окна (поскольку только одно из них может иметь фокус одновременно).

Вам нужно проверить,первым респондентом является NSText, и если это так, если поле поиска / текстовое поле является его делегатом.

NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
if ([firstResponder isKindOfClass:[NSText class]] && [(id)firstResponder delegate] == mySearchField) {
    NSLog(@"Yup.");
}
7 голосов
/ 22 ноября 2017

Хотя ответ Грега Титуса, вероятно, работает, я думаю, что следующий способ лучше:

BOOL isFirstResponder = mySearchField.currentEditor == mySearchField.window.firstResponder;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...