3

我有一个包含文本字段的单元格的 UITableView。当用户编辑每个文本字段时,我需要跟踪单元格的文本字段值(即使不再显示单元格,所以简单地跟踪文本字段也不起作用)。所以我使用 Key-Value Observing 并为我的 UITableViewController 子类中的每个文本字段设置了一个观察者:

[cell addObserver:self forKeyPath:@"textField.text" options:NSKeyValueObservingOptionNew context:nil];

observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context并在类的方法中保存对文本字段的新更改。

这在 iOS 6 中效果很好,但在 iOS 7 中,当用户更改文本字段值时不会调用 KVO。显然,通过在键盘上按“完成”调用的 setter 方法不再调用 KVO。

有解决方法吗?或者更好的方式来倾听这种变化?我需要知道文本字段属于哪个单元格,因此实现文本字段的方法editingDidEnd对我不起作用。

提前致谢。

4

1 回答 1

1

我不确定是否有解决方法,但肯定有更好的方法来监听 UITextField 文本值。如果您以编程方式创建 UITextField 的实例,您需要做的就是为它们添加一个事件处理程序,以通知您的类有关文本更改事件。例如:

[myTextField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];


- (void)editingChanged:(UITextField *)sender {
  NSString *targetText = sender.text;
}
于 2013-09-19T17:51:27.073 回答