从UILabel激活的键盘获取输入

时间:2014-03-08 20:29:11

标签: ios objective-c cocoa-touch uitextfield

当用户触摸UITableViewCellUICollectionViewCell中的标签时,我可以激活键盘:

UITextField *tf = [[UITextField alloc] initWithFrame:[cell bounds]];
[tf setKeyboardType:UIKeyboardTypeNumberPad];
[cell.lblTest addSubview:tf];
[cell.lblTest setUserInteractionEnabled:YES];

[cell.lblTest setText:[NSString stringWithFormat:@"cell %d", indexPath.row]];

结果如下:

我的问题:

1)我如何从键盘获取输入,

2)当用户更改单元格选择时,关闭键盘。

2 个答案:

答案 0 :(得分:2)

您可以成为文本字段的委托,也可以收听特定文本字段的UITextFieldTextDidChangeNotification通知,以了解更改。要关闭键盘,请在文本字段中调用resignFirstResponder

但这是一个糟糕的设计。您将越来越多的文本字段添加到视图层次结构中。在解除键盘时至少应该删除它们。 另外,你想要实现什么?在没有反馈的情况下向用户显示关于键输入的键盘(例如可见文本字段或文本视图),这不是一个很好的做法。

答案 1 :(得分:1)

当用户单击文本字段时关闭键盘:

为文本字段添加iboutlet

@property (weak, nonatomic) IBOutlet UITextField *textInput;

将此添加到viewController

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    if ([self.textInput isFirstResponder] && [touch view] != self.textInput) {
        [self.textInput resignFirstResponder];
    }
    [super touchesBegan:touches withEvent:event];
}