在NSTableView表中关闭“按回车编辑下一行”模式
作者: Cocoa China 【最热的Mac, iPhone专业开发论坛】【本文永久地址】
25
Mar
当用户在修改表格中的数据时,按回车、TAB或者shift+TAB键,会结束当前的编辑,同时跳到下一行。
但是某些时候你可能不希望跳到下一行,用户希望编辑特定的行,并不想编辑其他行。那么如何用代码禁用这一功能呢?
要结束编辑,你需要继承NSTableView类,在textDidEndEditing中增加自己的代码,以便托管消息,取消行的跳转,然后再让NSTableView进行其他处理。
代码如下:
- (void) textDidEndEditing: (NSNotification *) notification
{
NSDictionary *userInfo = [notification userInfo];
int textMovement = [[userInfo valueForKey:@"NSTextMovement"] intValue];
if (textMovement == NSReturnTextMovement
|| textMovement == NSTabTextMovement
|| textMovement == NSBacktabTextMovement) {
NSMutableDictionary *newInfo;
newInfo = [NSMutableDictionary dictionaryWithDictionary: userInfo];
[newInfo setObject: [NSNumber numberWithInt: NSIllegalTextMovement]
forKey: @"NSTextMovement"];
notification =
[NSNotification notificationWithName: [notification name]
object: [notification object]
userInfo: newInfo];
}
[super textDidEndEditing: notification];
[[self window] makeFirstResponder:self];
} // textDidEndEditing
发表评论