我有一个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
对我不起作用。
提前致谢。
答案 0 :(得分:1)
我不确定是否有针对此的解决方法,但肯定有更好的方法来监听UITextField文本值。如果要以编程方式创建UITextField实例,您只需为它们添加一个事件处理程序,以通知您的类有关文本更改事件的信息。例如:
[myTextField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];
- (void)editingChanged:(UITextField *)sender {
NSString *targetText = sender.text;
}