Как можно использовать "Первый ответчик" в файле xib?
Я читал о цепочках ответчиков, и в основном я читал о том, как события из пользовательского интерфейса передаются в цепочке ответчиков, как их обрабатывать и как проходить. Я также использовал -becomeFirstResponder и -resignFirstResponder, но я использовал их только для базовых задач, таких как отображение клавиатуры на iOS и обработка событий тряски.
Я хотел бы знать, как я могу использовать прокси-объект "Первый ответчик" в MainWindow.xib, который генерирует Xcode. Я вижу некоторые полученные действия, а также вижу, что я могу создавать действия на вкладке Инспектора удостоверений.
Итак, мой вопрос: как я могу использовать эти действия и , когда я должен использовать этот прокси-объект в IB?!
![Interface Builder Screenshot]()
Спасибо заранее.
Ответы
Ответ 1
Вы должны использовать First Responder как цель действия всякий раз, когда вы хотите, чтобы действие было отправлено первому ответчику, независимо от того, какой конкретный объект происходит в момент отправки действия.
На рабочем столе Cocoa сообщение, предназначенное для первого ответчика, фактически является действием nil
-targeted - никакая цель неявно понимается как первый возможный ответчик, первый ответчик.
Часто текстовые действия направляются первому ответчику. Вы хотите, чтобы нажатия клавиш были отправлены в зависимости от того, какое текстовое поле имеет фокус, но текстовое поле, которое имеет фокус, изменяется в течение срока действия представления и приложения. Вы можете вручную перенастроить действие каждый раз, когда текстовое поле получает фокус, но благодаря NSResponder
вам не нужно беспокоиться - все, о чем вас заботятся.
Ответ 2
Назначение действия первому объекту-ответчику аналогично добавлению действия в элемент управления с нулевой целью программно. Когда действие инициируется, приложение перейдет через цепочку ответчиков и отправит действие первому ответчику, который его примет. На маке часто используется для автоматической отправки команд меню в текущее окно или документ. Вы должны использовать его, если у вас есть несколько объектов, с которыми вы хотите отправлять сообщения с помощью одной и той же кнопки.