当用户添加新的托管对象时,它会显示在一个表格中,该表格向下滚动到新条目,并且新对象的名称(默认值)将进入编辑模式.
我需要检查数据存储区中新对象的名称是否唯一,因此我不能使用格式化程序.我认为我应该验证这一点的最佳时刻是用户尝试使用时提交条目的名称值textShouldEndEditing:.
我NSTableView将以下方法子类化并覆盖,只是为了能够在日志中检查它们是否被调用.
- (BOOL)textShouldEndEditing:(NSText *)textObject {
NSLog(@"textSHOULDendEditing fired in MyTableView");
return [super textShouldEndEditing:textObject];
}
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {
NSLog(@"control:textShouldEndEditing fired in MyTableView");
return YES;
}
- (void)textDidEndEditing:(NSNotification *)aNotification {
NSLog(@"textDIDEndEditing fired in MyTableView");
}
Run Code Online (Sandbox Code Playgroud)
textDidEndEditing:被称为罚款,但textShouldEndEditing:没有.
在NSTableView的类参考,在文字的委托方法,这两种方法textShouldEndEditing:,并textDidEndEditing:列出.有人请解释为什么一个人被召唤而另一个没有.
我认为NSTableView作为一个委托的行为NSTextField被实例化为黑盒子委托NSTextFieldCell.因此,在NSTableView类参考中称为委托方法,实际上实现了对象的文本操作方法.NSTextField
我试图宣布这NSTextFieldCell是我的出路NSTableView.我还尝试在声明中声明了几个协议NSTableView.
#import <AppKit/AppKit.h>
#import <Cocoa/Cocoa.h>
@interface MyTableView : …Run Code Online (Sandbox Code Playgroud)