禁用ESC和命令。在OSX Cocoa应用程序中

时间:2009-11-25 19:42:06

标签: objective-c cocoa macos ikpicturetaker

如果你按下设置按钮,我制作了一个小的可可应用程序,它会调出IKPictureTaker并将图片保存到文件中。目前,如果按esc或Command。窗口图片接收者将关闭。有没有办法禁用这种行为?

3 个答案:

答案 0 :(得分:2)

您需要及时将自己插入响应程序链中的某个位置以捕获转义键向下事件,并禁用它。您可能必须继承IKPictureTaker。下面的代码段可以为您提供帮助(source)。

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

答案 1 :(得分: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];
 }
}

答案 2 :(得分:0)

如果您希望/需要下拉到低级别,请参阅CGEvent API。使用它,您可以创建一个点击并吞下/修改特定事件。