我已为自己的inputView
设置了自定义UITextField
。我需要一种方法来显示inputView
中自定义UITextfield
中所选数据。我想以与系统键盘相同的方式实现这一点。
有谁知道这是怎么做的?系统键盘如何获得对作为第一响应者的UITextfield
的引用?
答案 0 :(得分:12)
系统键盘如何获得对作为第一响应者的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;
}
答案 1 :(得分:12)
将自定义输入视图中的输入发送回文本字段时,请注意您可以(应该)使用UIKeyInput
符合的UITextField
协议方法。即:
- (void)deleteBackward;
- (void)insertText:(NSString *)text;