Пользовательский 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;
Другие вопросы по тегам