mac开发系列16:复制功能的基本实现
mac微信中,很多地方都用到了复制功能,实现复制功能主要分为两步:1、监听复制事件;2、往粘贴板中写入要复制的内容。
1、监听复制事件主要包含两种:
1)自定义鼠标右键菜单,主要代码如下:
NSMenu *aMenu = [[NSMenu alloc] init];
NSMenuItem *aItem = [[NSMenuItem alloc] initWithTitle:itemName action:@selector(contextMenuCopy:) //copyFunction keyEquivalent:@""];[aMenu addItem:aItem];
2)键盘cmd+c,这里还包含三种实现:
2.1)mac微信左上角的自定义mainmenu.xib菜单项(只作用于微信一个app),如果有留意,会发现微信使用cmd+c复制时,“编辑”会闪一下,如下:
2.2)利用MASShortcut第三方快捷键插件,注册监听cmd+c,这是针对系统的,即不止对微信一个app起作用,具体实现在前面的文章有提过。
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(粘贴板)中写入要复制的内容,主要代码如下:
NSPasteboard *aPasteboard = [NSPasteboard generalPasteboard]; //获取粘贴板对象[aPasteboard clearContents]; //清空粘贴板之前的内容
NSData *aData = [aStr dataUsingEncoding:NSUTF8StringEncoding];
[aPasteboard setData:aData forType:NSPasteboardTypeString]; //type有不少类型,对应的写入粘贴板的方式也不一样,可以自行研究