Мышь не обнаружена на моем NStableview + какао - PullRequest
0 голосов
/ 01 августа 2009

Я пробовал это в течение последних нескольких дней, но не мог понять это.

У меня есть приложение, которое имеет NSOutlineView и NSTableView. Outlineview принимает входной путь и отображает их в виде древовидной структуры своего подсодержания. Поэтому, когда пользователь щелкает конкретную папку в представлении outine, содержимое этой папки должно отображаться в представлении таблицы с его атрибутами в виде списка.

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

Теперь моя проблема в том, что я хочу, чтобы события мыши обнаруживались в обоих представлениях, чтобы я мог сделать свое приложение более интерактивным, включив один щелчок, чтобы выбрать, дважды щелкнув, чтобы открыть файл / папку, и удерживая клавишу Control + щелчок, включить контекстное всплывающее меню. но, как ни странно, события мыши не обнаруживаются.

Мой дизайн приложения довольно прост: у каждого из табличных и контурных представлений есть свой вид и класс контроллера, а также взаимодействие между ними с помощью уведомлений. Ребята, подскажите, пожалуйста, где я ошибаюсь?

Я знаю, что могу получить один щелчок и двойной щелчок, чтобы работать с использованием методов setAction и DoubleAction представления таблицы, но я не могу получить управляющий щелчок для работы. Я хочу знать, что не так с моим дизайном приложения, так как не мои представления обнаруживают события мыши: (

Спасибо

1 Ответ

0 голосов
/ 01 августа 2009

Вы можете узнать, нажата ли кнопка Control:

if([[NSApp currentEvent] modifierFlags] & NSControlKeyMask){
    //control was pressed at the time the event was posted
}

Или вы можете создать подкласс NSTableView / NSOutlineView и переопределить mouseDown: для непосредственного получения события.

Кроме того, если ваше действие и doubleAction не работают, убедитесь, что цель / действие верны, например:

NSAssert([[theView target] respondsToSelector:[theView doubleAction]], @"target/action is wrong");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...