2009-11-25 29 views
0

我做了一个小巧的可可应用程序,它可以调出IKPictureTaker,并在按下设置按钮时将图片保存到文件中。目前,如果按Esc或Command。窗口拍摄者将关闭。有没有办法禁用这种行为?禁用ESC和命令。在OSX Cocoa应用程序中

回答

2

另一种方法是隐藏关闭和取消按钮,所以它们不能被压:

 
IKPictureTaker *taker = [IKPictureTaker pictureTaker]; 
[taker setStyleMask:0]; //disable close button 
for(NSView *aView in [[taker contentView] subviews]){ 
if([aView isKindOfClass:[NSButton class]]){ 
    NSButton *aButton = (NSButton*)aView; 
    if([aButton action] == @selector(cancelButton:)) 
    [aButton setHidden:YES]; 
} 
}
+0

关闭按钮在我的应用程序无法使用,有什么我问的是如何防止它被当某人按下esc键或命令时关闭。 – Mike2012 2009-12-08 18:28:43

+1

这是在esc/cmd上作用的取消或关闭按钮。所以禁用它们会给你你想要的行为。 但是如果你想让这个按钮可见,但是没有这个等价键,那么不用做[aButton setHidden:YES] do,[aButton setKeyEquivalent:@“”] – 2009-12-08 20:26:25

+1

这对10.9 Mavericks不起作用。如果我错过了什么,请告诉我。谢谢。 – 2014-05-01 01:51:02

2

您需要及时将自己插入响应者链中的某个位置以捕获退出键事件,并将其禁用。您可能需要子类IKPictureTaker。下面的代码段可以帮助你(source)。

- (void)keyDown:(NSEvent *)event { 
    if ([event keyCode] == 53) { 
     NSLog(@"Escape has been pressed"); 
    } 
} 
0

如果您希望/需要下降到较低级别,请参阅CGEvent API。使用它,你会创建一个水龙头并吞下/修改特定的事件。

相关问题