Ответ 1
Объем первого ответчика в iOS определяется иерархией представления. Помните, что ответчик является частью иерархии респондентов и определен документацией Apple:
Ответчик - это объект, который может реагировать на события и обрабатывать их. Все объекты-респонденты - это экземпляры классов, которые в конечном счете наследуются от UIResponder (iOS) или NSResponder (OS X).
Практически говоря, все респонденты являются частью цепочки потенциальных респондентов, ведущих весь путь до самого Приложения. Это означает, что область действия ответчика определяется тем, насколько далеко вы должны пройти цепочку, чтобы получить объект, способный обрабатывать ответ. Если первый ответчик является элементом пользовательского интерфейса, таким как UITextField, ваша область привязана к сфере действия этого ответчика.
На этом изображении слева показана иерархия первого ответа iOS (OS X справа):
Чтобы ответить на вторую часть вопроса, да, объекты могут "украсть" статус первого ответчика, если пользователь взаимодействует с элементом, например:
- Пользователь нажимает на textField1. Это первый ответчик.
- Пользователь нажимает на textField2. Он получил статус первого ответчика из textField1.
... и вы можете присвоить им статус первого ответчика с определенными функциями:
[textField3 becomeFirstResponder]; //This is now the first responder
[textField4 becomeFirstResponder]; //Now textField2 has 'stolen' first responder status
[textField4 resignFirstResponder]; //The text field has resigned its first responder status to the next level up
Для всех, кто читает это, кто не попал в документацию Apple по этому поводу, хорошим стартовым местом является объяснение иерархии ответчика, найденное здесь: https://developer.apple.com/library/ios/documentation/General/Conceptual/Devpedia-CocoaApp/Responder.html
Надеюсь, это поможет!