iPhone первые респонденты

Я смущен цепочкой респондента iPhone. А именно, в руководстве обработки событий iPhone http://developer.apple.com/iPhone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/EventHandling.html у нас есть следующее:

Первый респондент является объектом респондента в приложении (обычно объект UIView), который определяется, чтобы быть первым получателем событий кроме сенсорных событий.

Но UIView является подклассом UIResponder. И ссылка класса UIResponder говорит это:

- (BOOL)canBecomeFirstResponder

Возвращаемое значение

ДА, если получатель может стать первым респондентом, НЕТ иначе. Обсуждение

Возвраты НЕ по умолчанию. Если объект респондента возвращает ДА из этого метода, это становится первым респондентом и может получить сенсорные события и сообщения действия. Подклассы должны переопределить этот метод, чтобы смочь стать первым респондентом.

Я смущен очевидным противоречием. Кто-либо может разрешить его для меня?

Если это имеет значение я действительно настраивал простое основанное на представлении приложение и называл canBecomeFirstResponder и isFirstResponder на его представлении. Оба возвратились НЕТ.

10
задан William Jockusch 10 April 2010 в 03:40
поделиться

2 ответа

Это означает, что базовый UIView не может стать первым помощником - он ничего не делает с событиями движения, сообщениями меню редактирования и т.д.

Некоторые подклассы UIView (например, UITextView) могут стать первым реагирующим, и вы можете написать свой собственный подкласс UIView, который тоже это делает.

9
ответ дан 3 December 2019 в 16:29
поделиться

Номенклатура может сбивать с толку. Вместо «первого респондента» подумайте об этом как о «начальной цели события», то есть объект, который является первым респондентом, становится начальной целью для всех событий. В некоторых API это также называется «фокус», хотя в API Apple он обычно зарезервирован для описания окон.

В любой момент времени в приложении есть только один первый респондент / начальное событие-цель. Только отдельные объекты / экземпляры могут стать целью первого реагирования / начального события. Классы могут просто определять, имеет ли их экземпляр возможность стать первым респондентом / исходной целью-событием. Класс должен только предоставить возможность стать первым ответчиком / исходным событием-целью приложения, если это имеет смысл. Например, текстовому полю, очевидно, необходима возможность перехвата событий, чтобы оно могло использовать это событие для редактирования самого себя. Напротив, статическая метка не нуждается в такой возможности.

То, наследуется ли конкретный класс от NSResonder, не имеет никакого отношения к тому, разрешит ли класс (или конкретный экземпляр класса) быть установленным как первый респондент / начальная цель-событие. Эта способность исходит исключительно из ответа экземпляра на сообщение canBecomeFirstResponder . Один и тот же экземпляр может отказаться от роли первого респондента / начальной цели события при одном наборе условий, а затем разрешить это позже, когда условия изменятся. Классы, конечно, могут при желании закрепить статус.

Другими словами, первый респондент / начальное-событие-цель - это состояние конкретного экземпляра в конкретное время.Первый ответчик / начальная цель-событие похожа на горячую картошку или токен, который передается от экземпляра к экземпляру в пользовательском интерфейсе. Некоторые классы вообще отказываются брать горячий картофель. Некоторые всегда это делают, а другие иногда хватаются за это и игнорируют другие.

16
ответ дан 3 December 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: