Какао: В каком NSTextView мигает точка вставки? - PullRequest
1 голос
/ 08 мая 2009

Учитывая объект NSApp (он же [NSApplication sharedApplication]), как я могу получить активный в данный момент NSTextView, где точка вставки мигает прямо сейчас (если она есть)? : -)

Я могу пойти [[NSApp keyWindow] contentView] и попытаться обойти всю иерархию представлений, но это кажется слишком сложным. Идеальный код был бы: [NSApp focusTextView].

Я попробовал firstResponder для приложения и окна, а также fieldEditor: forObject:, но это не возвращает ничего интересного (по крайней мере, мне).

Кстати, если кто-нибудь знает, как получить текущее представление текста в масштабе всей системы, это было бы еще круче (API доступа не будут работать: он не вернет Cocoa NSTextView).

Спасибо

Ответы [ 2 ]

3 голосов
/ 08 мая 2009

Функция -firstResponder возвращает редактор поля. Поэтому, если вы хотите получить реальное представление, вам может понадобиться проверить делегата первого респондента, чтобы добраться до него. Также см. редактор полей для деталей.

Вероятно, нет способа сделать его общесистемным, как NSTextViews, поскольку этот объект обычно находится в другом пространстве процесса.

1 голос
/ 09 мая 2009

Кстати, если кто-нибудь знает, как получить текущее представление текста в масштабе всей системы, это было бы еще круче (API доступа не будут работать: он не вернет Cocoa NSTextView).

Не возможно. NSTextViews для каждого процесса; вы не можете получить прокси для NSTextView от другого процесса без этого другого процесса, обслуживающего его через NSConnection. Вы просто должны будете использовать Доступность.

С другой стороны, использование Accessibility означает, что ваше приложение должно (теоретически) также работать с приложениями Carbon, которые используют MLTE / HITextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...