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