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有不少類型,對應的寫入粘貼板的方式也不一樣,可以自行研究