mac開發(fā)系列16:復制功能的基本實現(xiàn)

mac微信中,很多地方都用到了復制功能,實現(xiàn)復制功能主要分為兩步:1、監(jiān)聽復制事件;2、往粘貼板中寫入要復制的內(nèi)容。
1、監(jiān)聽復制事件主要包含兩種:
1)自定義鼠標右鍵菜單,主要代碼如下:
NSMenu *aMenu = [[NSMenu alloc] init];
NSMenuItem *aItem = [[NSMenuItem alloc] initWithTitle:itemName action:@selector(contextMenuCopy:) //copyFunction keyEquivalent:@""];[aMenu addItem:aItem];

2)鍵盤cmd+c,這里還包含三種實現(xiàn):
2.1)mac微信左上角的自定義mainmenu.xib菜單項(只作用于微信一個app),如果有留意,會發(fā)現(xiàn)微信使用cmd+c復制時,“編輯”會閃一下,如下:



2.2)利用MASShortcut第三方快捷鍵插件,注冊監(jiān)聽cmd+c,這是針對系統(tǒng)的,即不止對微信一個app起作用,具體實現(xiàn)在前面的文章有提過。
2.3)重寫keydown事件,主要代碼如下:

-(void)keydown:(NSEvent *)theEvent {
if ((theEvent.modifierFlags & NSCommandKeyMask) && (theEvent.keyCode == kVK_ANSI_C)) { // Do something when press cmd+c on keyboard }}

2、往NSPasteboard(粘貼板)中寫入要復制的內(nèi)容,主要代碼如下:

NSPasteboard *aPasteboard = [NSPasteboard generalPasteboard]; //獲取粘貼板對象[aPasteboard clearContents]; //清空粘貼板之前的內(nèi)容
NSData *aData = [aStr dataUsingEncoding:NSUTF8StringEncoding];
[aPasteboard setData:aData forType:NSPasteboardTypeString]; //type有不少類型,對應的寫入粘貼板的方式也不一樣,可以自行研究

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 27,768評論 5 19
  • 六年前的時候,我跨過了人生中的第一個轉(zhuǎn)折點,從小學光榮的跨入了初中。 開學第一天,我羞答答站在教室門口尋找自己...
    啵魯魯閱讀 295評論 1 0
  • 不知為何,隨著時間的流逝,王恒現(xiàn)在都有些心驚膽顫,淡淡的不安揮之不去,如鬼魅般彌漫心間!對自己的本能危機漸漸...
    永恒混沌真理閱讀 195評論 0 1