я просто реализован следующий метод, который предполагают, чтобы принять какое-либо действие после того, как значение NSTextField изменяется в моей NSOutlineViewtextShouldEndEditing в NSOutlineTableView становится вызывается дважды
-(BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
NSLog(@"end editing");
NSTextField* tf = (NSTextField*)control;
if(selectedItem && [selectedItem isKindOfClass:[HSCategoryClass class]])
{
HSCategoryClass* c = selectedItem;
c.name = tf.stringValue;
// request the update from DB
[[NSNotificationCenter defaultCenter] postNotificationName:@"updatingCategoryName"
object:c
userInfo:@{@"sender":self}];
}
return YES;
}
Однако, когда я сделал редактирования и нажмите клавишу ВВОД или перемещаться в любом месте за пределами текстового поля, этот метод получает вызов дважды, а не один раз.
Кто-нибудь знает, почему это так ?!
Любая помощь очень ценится!
Привет Кен, спасибо за Ваш ответ! Я попытался реализовать его так, как вы предлагаете, но по какой-то причине textDidEndEditing: не получает вызов в моем OutlineView ... знаете ли вы, что может быть проблемой? –
Не помните, чтобы вы изменили класс контура в своем nib, чтобы быть вашим подклассом? –
да ... это сделано правильно ... –