I have set a custom inputView
to my UITextField
. I need a way to display the data selected in my custom inputView
in the UITextfield
. I would like to achieve this the same way the system keyboard does it.
Does anyone know how this is done? How does the system keyboard get a reference to the UITextfield
that is the first responder?
When sending input from your custom input view back to the textfield, note that you can (should) use the UIKeyInput
protocol methods that UITextField
conforms to. Namely:
- (void)deleteBackward;
- (void)insertText:(NSString *)text;
How does the system keyboard get a reference to the UITextfield that is the first responder?
It just asks the system for the first responder; unfortunately, that's a private UIKit method (or was, last I checked). You can find the first responder by recursing through the view hierarchy and asking each view, but that's pretty clumsy.
Instead, you can add a link to the text field on the input view (I'm assuming your input view is a custom UIView subclass):
@property(nonatomic, assign) UITextField* target;
Then use the UITextField delegate methods in your view controller to see when the text field is being focused:
- (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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With