2015-06-23 3 views
1

Я хочу представить контекстное меню NSTextView для определенного объекта NSString (скажем, «текст») каждый раз, когда -rightMouseDown-метод моего настраиваемого NSResponder -subclass вызывается.Как показать контекстное меню в виде NSTextView

enter image description here

Где я могу получить эти предметы для некоторых NSString?

UPD

создал NSTextView экземпляр и использовать его -menuForEvent: -метод. Некоторые элементы были отключены (например, «copy» и т. Д.), Я возвращаю его целевое значение в пользовательский объект с помощью переопределенных селекторов (например, -copy: и другие).

ответ

4

NSTextView является подклассом NSView, который provides a class method+defaultMenu. Поэтому вы можете попросить NSMenu * menu = [NSTextView defaultMenu];, чтобы получить, пожалуйста, свою собственную копию. Возможно, вам придется проложить свою структуру и настроить отдельные экземпляры NSMenuItem, чтобы настроить их цель/действие, но большинство (все?) Должно отлично работать с nil-target (посылает действие первому ответчику) и их действием по умолчанию.

Должен признаться, однако, я не уверен, что вы подразумеваете под «Где я могу получить эти предметы за некоторые NSString?» Контекстное меню открывается из некоторого элемента управления UI (например, текстового вида) и отправляет его действие (например, -checkSpelling...) в какую-либо цель (например, первый ответчик, который должен быть чем-то вроде текстового представления, который действует как представление для строки или атрибутная строка).

+0

(Я обновил это, чтобы добавить второй абзац после голосования, пожалуйста, перечитайте.) –

+0

Благодарим вас за ответ. К сожалению, метод класса возвращает меню с элементами, совершенно отличными от тех, которые я дал в OP-сообщении. Похоже, что меню, которое я ищу, создает где-то внутри экземпляра 'NSTextView' в соответствии с его выделенным диапазоном текста. (Отредактированный вопрос будет более ясным) – Astoria

+0

Хммм ... это ваш взгляд на * прямой * подкласс NSResponder? Если это так (и обрабатывает текст), почему бы не сделать его подклассом как минимум NSText, если не NSTextView? Таким образом, вы получаете все поведение «бесплатно». В противном случае поддерживайте текстовый вид вне экрана, подавайте его на свой текст, а затем спрашивайте его за его «-menuForEvent:» ... (другими словами, «поддельный»). ;-) –

Смежные вопросы