【发布时间】:2018-07-31 09:52:34
【问题描述】:
我有一个UITextField,它是UITableViewCell 的一部分,该表应该是一个哑组件。
UITextField 触发的事件由自定义委托处理,该委托:
- 每次值更改(键入、旋转选择器等)都会触发一系列事件来存储和处理数据
- 在链的末端
UITableView完全重新加载。 - 完全重新加载会导致
inputView消失。
虽然我想要 1. 和 2.,但我不想要 3. inputView 应该保持打开状态并专注于正在编辑的 UITextField -> 我正在寻找一种方法来打开/关闭 以编程方式,也许将其放在-(void)prepareForReuse 的UITableViewCell 中
我最通用的自定义UITableViewCell初始化:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.inputField = [UITextField new];
[self.inputField addTarget:self
action:@selector(textFieldDidChange:)
forControlEvents:UIControlEventEditingChanged];
[self.contentView addSubview:self.inputField];
[self.inputField setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.inputField.leftAnchor constraintEqualToAnchor:self.contentView.leftAnchor].active = YES;
[self.inputField.rightAnchor constraintEqualToAnchor:self.contentView.rightAnchor].active = YES;
[self.inputField.topAnchor constraintEqualToAnchor:self.contentView.topAnchor].active = YES;
[self.inputField.bottomAnchor constraintEqualToAnchor:self.contentView.bottomAnchor].active = YES;
}
return self;
}
更改处理示例(inputView 可以是标准键盘、UIPickerView 或自定义):
-(void) textFieldDidChange:(UITextField *)textField {
NSString *valueString = textField.text;
[self.delegate handleValueChange:valueString forAttributeID:self.attributeID];
}
【问题讨论】:
标签: ios uitableview delegates uitextfield uicontrol