Ответ 1
Как системная клавиатура получает ссылку на поле UIText, которое является первым ответчиком?
Он просто спрашивает систему для первого ответчика; к сожалению, что частный метод UIKit (или был, последний раз я проверил). Вы можете найти первого ответчика, рекурсив через иерархию представлений и спросив каждую точку зрения, но это довольно неуклюжий.
Вместо этого вы можете добавить ссылку на текстовое поле в представлении ввода (я предполагаю, что ваше представление ввода является пользовательским подклассом UIView):
@property(nonatomic, assign) UITextField* target;
Затем используйте методы делегата UITextField в вашем контроллере просмотра, чтобы увидеть, когда сфокусировано текстовое поле:
- (void)textFieldDidBeginEditing:(UITextField*)textField
{
if ( [textField.inputView isKindOfClass:[MyInputView class]] )
((MyInputView*)textField.inputView).target = textField;
}
- (void)textFieldDidEndEditing:(UITextField*)textField
{
if ( [textField.inputView isKindOfClass:[MyInputView class]] )
((MyInputView*)textField.inputView).target = nil;
}