自定义inputView for UITextField,如何将输入直接返回到文本字段?
我已经为我的UITextField
设置了一个自定义inputView
。 我需要一种方法来显示在inputView
中我的自定义inputView
中选择的数据。 我希望以与系统键盘相同的方式实现此目的。
有谁知道这是怎么做的? 系统键盘如何获得对作为第一响应者的UITextfield
的引用?
系统键盘如何获得对作为第一响应者的UITextfield的引用?
它只是询问系统的第一响应者; 不幸的是,这是一个私有的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; }
将输入从自定义输入视图发送回文本字段时,请注意您可以(应该)使用UITextField
符合的UIKeyInput
协议方法。 即:
- (void)deleteBackward; - (void)insertText:(NSString *)text;