当用户触摸UITableViewCell
或UICollectionViewCell
中的标签时,我可以激活键盘:
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)当用户更改单元格选择时,关闭键盘。
答案 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];
}