Пользовательский inputView для UITextField, как я могу направить ввод обратно в текстовое поле?
Я поставил кастом inputView
к моему UITextField
, Мне нужен способ отображения данных, выбранных в моем inputView
в UITextfield
, Я хотел бы добиться этого так же, как это делает системная клавиатура.
Кто-нибудь знает, как это делается? Как системная клавиатура получает ссылку на UITextfield
это первый ответчик?
2 ответа
Как системная клавиатура получает ссылку на поле 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;
}
При отправке ввода из пользовательского представления ввода обратно в текстовое поле, обратите внимание, что вы можете (должны) использовать UIKeyInput
методы протокола, которые UITextField
соответствует. А именно:
- (void)deleteBackward;
- (void)insertText:(NSString *)text;