我有一个UITextField
的一部分UITableViewCell
,该表应该是哑表。
UITextField
触发的事件由自定义委托处理,该委托:
UITableView
的末尾已完全加载。inputView
消失。虽然我想要1.和2.,但是我不想3. inputView
应该保持打开状态,并专注于正在编辑的UITextField
->我正在寻找一种方法来实现以编程方式>打开/关闭,也许将其放置在-(void)prepareForReuse
的{{1}}
我最通用的自定义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
答案 0 :(得分:1)
我认为问题在于,一旦调用reloadData
,就会为所有可见的部分/行创建新的单元格,因此原始输入视图将失去其第一个响应者状态。
有很多方法可以规避这一点。也许最简单的方法是不调用reloadData
,而只是重新加载“已更改”的单元格(´reloadRowsAtIndexPaths:withRowAnimation:`)-特别是不要使用导致更改的inputView重新加载单元格< / p>
或者,您可以存储“活动的” IndexPath,并在刷新后让适当的inputView再次成为第一响应者。
可能还需要考虑其他解决方案-所有这些都取决于您的工作流程。