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有不少类型,对应的写入粘贴板的方式也不一样,可以自行研究

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,548评论 25 708
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 27,888评论 5 19
  • 六年前的时候,我跨过了人生中的第一个转折点,从小学光荣的跨入了初中。 开学第一天,我羞答答站在教室门口寻找自己...
    啵鲁鲁阅读 309评论 1 0
  • 不知为何,随着时间的流逝,王恒现在都有些心惊胆颤,淡淡的不安挥之不去,如鬼魅般弥漫心间!对自己的本能危机渐渐...
    永恒混沌真理阅读 195评论 0 1