转载来自:http://blog.sina.com.cn/s/blog_575b854e0100tatl.html
当程序的MainMenu中的Edit栏不存在的话,NStextField的快捷键功能会失效,因为需要使用协议重新定义它的快捷键功能。
在你要使用的窗口(或view)添加如下,覆盖原有的TextField的函数。
@interface NSTextField (copypast)
- (BOOL)performKeyEquivalent:(NSEvent *)event;
@end
@implementation NSTextField (copypast)
- (BOOL)performKeyEquivalent:(NSEvent *)event
{
if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask) {
// The command key is the ONLY modifier key being pressed.
if ([[event charactersIgnoringModifiers] isEqualToString:@"x"]) {
return [NSApp sendAction:@selector(cut:) to:[[self window] firstResponder] from:self];
} else if ([[event charactersIgnoringModifiers] isEqualToString:@"c"]) {
return [NSApp sendAction:@selector(copy:) to:[[self window] firstResponder] from:self];
} else if ([[event charactersIgnoringModifiers] isEqualToString:@"v"]) {
return [NSApp sendAction:@selector(paste:) to:[[self window] firstResponder] from:self];
} else if ([[event charactersIgnoringModifiers] isEqualToString:@"a"]) {
return [NSApp sendAction:@selector(selectAll:) to:[[self window] firstResponder] from:self];
}
}
return [super performKeyEquivalent:event];
}
@end