Как сделать контроллер представления первым респондентом для NSView в Какао - PullRequest
1 голос
/ 17 сентября 2010

Я пытаюсь реализовать контроллер представления для настраиваемого представления на основе NSOpenGLView (это Какао, а не Какао Touch).

Представление содержится в загруженном окне NIB, но не имеет собственного NIB. Фактически окно содержит несколько экземпляров представления.

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

Так как это можно сделать?

Я пытался заставить метод viewFirstResponder вызывать makeFirstResponder с контроллером в качестве аргумента. Однако это, похоже, не работает, представление по-прежнему получает события мыши вместо контроллера, если NSView ::comeFirstResponder возвращает YES. Если он возвращает NO, ни один из моих классов не получает события мыши.

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

1 Ответ

5 голосов
/ 17 сентября 2010

Для общего статуса «первого респондента» я рекомендую MTViewController Чарльза Парно, подкласс NSViewController, который использует KVO, чтобы убедиться, что контроллер находится в цепочке респондента без каких-либо дополнительных усилий с вашей стороны.

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

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