Цепочка реагирующих элементов
Жесты проходят систему, состоящую из последовательности событий, а события передаются по цепочке реагирующих элементов (responder chain), и поэтому необходимо ясно понимать, каким образом эта цепочка действует, чтобы правильно обрабатывать жесты.
Если у вас имеется опыт работы в среде Cocoa для системы Mac OS X, вам должно быть знакомо понятие цепочки реагирующих элементов. Аналогичный основной механизм применяется и в среде Cocoa Touch. Но если этот механизм вам незнаком, ниже поясняется принцип его действия.
На страницах этой книги уже неоднократно упоминалось о первом реагирующем элементе. Как правило, им является объект, с которым пользователь взаимодействует в настоящий момент. Первый реагирующий элемент находится в самом начале цепочки реагирующих элементов, где имеются и другие подобные элементы.
Любой класс, для которого UIResponder служит одним из его суперклассов, является реагирующим элементом. Так, класс UlView является подклассом класса UIResponder, а класс uiControl — подклассом класса UlView, и поэтому все представления и элементы управления являются реагирующими элементами. Класс UlViewController также является подклассом UIResponder, а это означает, что он и все его подклассы, в том числе UINavigationController и UITabBarController, относятся к числу реагирующих элементов. Реагирующие элементы называются так потому, что они реагируют на порождаемые системой события, например касания экрана.
Передача события вверх по цепочке реагирующих элементов.
Если первый реагирующий элемент не обрабатывает конкретное событие, например жест, он передает его далее по цепочке реагирующих элементов. Если же следующий по цепочке объект реагирует на это конкретное событие, он, как правило, обрабатывает данное событие, прекращая его распространение по цепочке реагирующих элементов.
Если реагирующий элемент обрабатывает событие лишь частично, он предпринимает действие, чтобы направить событие следующему по цепочке реагирующему элементу, хотя такое случается редко. Как правило, если объект реагирует на событие, то на этом цепочка его распространения обрывается. Если же событие проходит всю цепочку реагирующих элементов и не обрабатывается ни одним из элементов, в таком случае оно отвергается.
Рассмотрим действие цепочки реагирующих элементов более подробно. Первым реагирующим элементом почти всегда является представление или элемент управления. Именно здесь предпринимается первая попытка отреагировать на событие.
- Дата: 16-01-2015, 21:32