gpt4 book ai didi

cocoa - 使用按键从表格 View 中删除条目

转载 作者:行者123 更新时间:2023-12-03 17:32:18 25 4
gpt4 key购买 nike

我有一个简单的 cocoa 应用程序,其中有一个显示一些条目的表格 View 。我希望用户能够通过简单地在表中选择它并按“删除”来删除他想要的任何条目。如何检测“删除”按键以及如何知道它是否在用户选择表格 View 中的条目时发生?

**编辑:如果我没有说清楚,“删除”指的是 Mac 键盘上的退格键,而不是 GUI 按钮。

最佳答案

对 TableView 进行子类化,并让它在按下删除键时发送其委托(delegate)事件。

MyTableView.h:

@interface MyTableView : NSTableView

@end

@protocol MyTableViewDelegate <NSTableViewDelegate>

-(BOOL)deleteKeyPressedForTableView:(MyTableView *)tableView;

@end

MyTableView.m:

+(unichar)firstCharPressedForEvent:(NSEvent *)theEvent {
if (![[theEvent characters] length]) return -1;
return [[theEvent characters] characterAtIndex:0];
}

+(BOOL)eventIsDeleteKeyPressed:(NSEvent *)theEvent {
switch ([MyTableView firstCharPressedForEvent:theEvent]) {
case NSDeleteFunctionKey:
case NSDeleteCharFunctionKey:
case NSDeleteCharacter:
return YES;
default:
return NO;
}
}

-(void)keyDown:(NSEvent *)theEvent {
if ([MyTableView eventIsDeleteKeyPressed:theEvent])
if ([[self delegate] respondsToSelector:@selector(deleteKeyPressedForTableView:)])
if ([(id<MyTableViewDelegate>)[self delegate] deleteKeyPressedForTableView:self])
return;

// The delegate wasn't able to handle it
[super keyDown:theEvent];
}

表格 View 的委托(delegate):

- (BOOL)deleteKeyPressedForTableView:(MyTableView *)tableView {
// check if row is selected
if (no_row_selected) return NO;
// handle deletion
if (error_condition) return NO;
return YES;
}

关于cocoa - 使用按键从表格 View 中删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com