Как новичок в Какао, я изо всех сил пытаюсь понять, почему общие подклассы NSResponder реализуют ключевые события так, как они, кажется, делают.
В моей программе у меня есть подкласс NSWindow, который занимает весь экран и должен обязательно обрабатывать ключевые события. Существует несколько основных команд, которые могут изменить все состояние программы (например, приостановить таймер, когда пользователь нажимает пробел), для которых нет смысла иметь подпредставления, подобные дескриптору NSTextField.
Мне кажется, что делегат (контроллер) должен получить эти события. Вместо этого я нахожу, что мне нужно либо написать кучу грязного связующего кода, чтобы окно (с помощью его селекторов keyDown:
и interpretKeyEvents:
) уведомило контроллер, либо мне просто нужно переместить кучу кода контроллера в подкласс NSWindow. сам по себе.
Это грязно, и моя интуиция говорит мне, что я что-то упустил. Есть ли более чистое решение?