自定义inputView for UITextField,如何将输入直接返回到文本字段?

时间:2012-04-10 21:51:18

标签: ios cocoa-touch uitextfield first-responder inputview

我已为自己的inputView设置了自定义UITextField。我需要一种方法来显示inputView中自定义UITextfield中所选数据。我想以与系统键盘相同的方式实现这一点。

有谁知道这是怎么做的?系统键盘如何获得对作为第一响应者的UITextfield的引用?

2 个答案:

答案 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;