Лучший способ получить ключевые события в NSTextView?

Я думаю, что лучше найти ошибки, а не игнорировать их.

попробуйте это:

В Gradle Console найдите «Написал отчет HTML в файл», откройте указанный HTML-файл и вы найдете отчет о lint

Перейдите к своим ошибкам и исправьте их

15
задан Community 20 November 2015 в 15:53
поделиться

4 ответа

Обычно способ, которым Вы реализуете его, состоит в том, чтобы просто добавить необходимую функцию к контроллеру Вашего представления и установить его делегата. Например, если Вы хотите, чтобы код работал, когда представление загружается, Вы просто делегируете свое представление к контроллеру и реализуете функцию awakeFromNib.

Так, для обнаружения нажатия клавиши в текстовом представлении, удостоверяются, что контроллер является текстовым делегатом представления, и затем реализуйте это:

- (void)keyUp:(NSEvent *)theEvent

Примечание, что это - наследованный метод NSResponder, не метод NSTextView.

14
ответ дан 1 December 2019 в 02:38
поделиться

Просто подсказка для подсветки синтаксиса:

не выделяют целое текстовое представление сразу - это очень медленно. Также не выделяйте последний отредактированный текст с помощью-editedRange - это очень медленно также, если пользователь вставляет большое тело текста в текстовое представление.

Вместо этого необходимо выделить видимый текст, который сделан как это:

NSRect visibleRect = [[[textView enclosingScrollView] contentView] documentVisibleRect];
NSRange visibleRange = [[textView layoutManager] glyphRangeForBoundingRect:visibleRect inTextContainer:[textView textContainer]];

Тогда Вы подаете visibleRange к своему коду выделения.

10
ответ дан 1 December 2019 в 02:38
поделиться

Важно сказать нам, что Вы действительно пытаетесь выполнить — высокоуровневая цель, что Вы думаете, получая ключевые события в NSTextView, обратится.

, Например, то, когда кто-то спрашивает меня, как получить ключевые события в поле NSText , что они действительно хотят знать, - то, как проверить вход в поле. Это сделано путем установки средства форматирования поля на экземпляр NSFormatter (включало ли одно из средств форматирования в Какао или пользовательское), не путем обработки нажатий клавиш непосредственно.

Так данный, что пример, что Вы действительно пытаетесь выполнить?

2
ответ дан 1 December 2019 в 02:38
поделиться

Я сделал некоторое трудное рытье, и я действительно находил ответ на свой собственный вопрос. Я достигну его ниже, но благодаря двум парням, которые ответили. Я думаю, что Переполнение стека уже является фантастическим сайтом - я надеюсь, что больше разработчиков Mac находит свой путь в том, как только бета по - это могло быть большим ресурсом для других разработчиков, обращающихся к переходу к платформе.

Так, я, как предложил Danny, действительно находил свой ответ в делегации. То, что я не понял из сообщения Danny, было то, что существует ряд поддерживающих делегата методов в объекте делегирования, и что делегат должен реализовать, сказали события. И так для TextView, я смог найти метод textDidChange, который выполнил то, что я хотел еще лучшим способом, чем просто получение нажатий клавиш сделает. Таким образом, если я реализую это в своем контроллере:

- (void)textDidChange:(NSNotification *)aNotification;

я могу ответить на отредактированный текст. Существуют, конечно, другие доступные методы, и я счастлив играть с ними, потому что я знаю, что изучу много, как я делаю. Еще раз спасибо, парни.

1
ответ дан 1 December 2019 в 02:38
поделиться