【MacOS开发】HotKey(快捷键)

2016-11-07 21:56:10来源:CSDN作者:zz110731人点击

第七城市

在MacOS开发中,设置快捷键是必不可少的,这里总结了两种方法。

方法一:在IB中快速设置

如果将快捷键设置为MacAPP默认的,用户不可以更改的快捷键,推荐使用这种方法,十分便捷。具体就是在StoryBoard中为NSMenuItem设置KeyEquivalent属性,简单直接。如下图:

方法二:代码实现快捷键设置

允许用户设置快捷键的话,推荐使用这种方法。首先引入Carbon.framework, 具体方法如下:

// 注册快捷键- (void)costomHotKey {    // 1、声明相关参数    EventHotKeyRef myHotKeyRef;    EventHotKeyID myHotKeyID;    EventTypeSpec myEvenType;    myEvenType.eventClass = kEventClassKeyboard;    // 键盘类型    myEvenType.eventKind = kEventHotKeyPressed;     // 按压事件    // 2、定义快捷键    myHotKeyID.signature = 'yuus';  // 自定义签名    myHotKeyID.id = 4;              // 快捷键ID    // 3、注册快捷键    // 参数一:keyCode; 如18代表1,19代表2,21代表4,49代表空格键,36代表回车键    // 快捷键:command+4    RegisterEventHotKey(21, cmdKey, myHotKeyID, GetApplicationEventTarget(), 0, &myHotKeyRef);    // 快捷键:command+option+4//    RegisterEventHotKey(21, cmdKey + optionKey, myHotKeyID, GetApplicationEventTarget(), 0, &myHotKeyRef);    // 5、注册回调函数,响应快捷键    InstallApplicationEventHandler(&hotKeyHandler, 1, &myEvenType, NULL, NULL);}
// 4、自定义C类型的回调函数OSStatus hotKeyHandler(EventHandlerCallRef nextHandler, EventRef anEvent, void *userData) {    EventHotKeyID hotKeyRef;    GetEventParameter(anEvent, kEventParamDirectObject, typeEventHotKeyID, NULL, sizeof(hotKeyRef), NULL, &hotKeyRef);    unsigned int hotKeyId = hotKeyRef.id;    switch (hotKeyId) {        case 4:            // do something            NSLog(@"%d", hotKeyId);            break;        default:            break;    }    return noErr;}

相关链接:

本文DEMO https://github.com/zhangzhaopds/KeyEquivalentDemo.git

参考 http://alvinzhu.me/blog/2013/11/05/cocoakai-fa-an-jian-shi-jian-jian-ting/

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台