iPhone: Как объект UIView узнает, какой его контроллер? - PullRequest
1 голос
/ 05 января 2011

Цепочка респондента отправляет событие представлению, а затем его контроллеру. Но как система знает объект контроллера для представления? Я не нашел ни одного свойства в UIView, в котором хранится ссылка на его контроллер. С другой стороны, контроллер явно обладает свойством view для идентификации своего представления.

Ответы [ 3 ]

2 голосов
/ 05 января 2011

UIView (UIResponder подкласс) знает о своем viewcontroller или суперпредставлении через метод экземпляра

- (UIResponder *)nextResponder

С UIResponder ссылка на класс:

Класс UIResponder не хранит или установите следующий респондент автоматически, вместо того, чтобы вернуть ноль по умолчанию. Подклассы должны переопределять этот метод для установки следующего респондента. UIView реализует этот метод путем возвращая объект UIViewController который управляет им (если он есть) или его superview (если это не так); UIViewController реализует метод вернув супервизию своей точки зрения; UIWindow возвращает приложение объект, и UIApplication возвращает ноль.

0 голосов
/ 05 января 2011

Вот хорошее объяснение того, как работает цепочка респондента: http://iphonedevelopment.blogspot.com/2008/10/bit-about-responder-chain.html.

РЕДАКТИРОВАНИЕ:

Поскольку контроллеры представления тесно связаны с представлениями, которыми они управляют, они такжечасть цепочки респондента, используемая для обработки событий.Контроллеры представления сами являются потомками класса UIResponder и вставляются в цепочку респондента между управляемым представлением и его суперпредставлением.

Таким образом, UIView и UIViewControllers также являются потомками UIResponder, который имеет метод setNextResponder:след следующего респондента в цепочке.

Мози

0 голосов
/ 05 января 2011

Как я понимаю, ViewController - это первый объект для системы (не UIView), он включается в цепочку респондента (читайте о классе UIResponder) и управляет касаниями, отправляя их соответствующим UIView.

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