开发者

Disabling ESC and Command . in an OSX Cocoa app

开发者 https://www.devze.com 2022-12-12 07:03 出处:网络
I made a little cocoa app that brings up an IKPictureTaker and saves a picture to a file if you press the set 开发者_如何学编程button.Currently, if you press esc or Command . the window picture taker

I made a little cocoa app that brings up an IKPictureTaker and saves a picture to a file if you press the set 开发者_如何学编程button. Currently, if you press esc or Command . the window picture taker will close. Is there a way to disable this behavior?


Another approach is to hide the close and Cancel buttons, so they can't be pressed:

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];
 }
}


You need to insert yourself somewhere in the responder chain in time to catch the escape key down event, and disable it. You may have to subclass IKPictureTaker. The snippet below should help you (source).

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


If you want/need to drop down to the low level, see the CGEvent API. Using it, you'd create a tap and swallow/modify specific events.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号