I.前言
意图与目的
你有没有遇到这种场景,正在努力切图,需要复制多段的内容,然后把它们粘贴到你的项目中,但是没有一个顺手的剪贴板管理工具,所以感觉非常难受,嗷嗷叫?
作为一名 CV 实习生,我也遇到了这个问题。我尝试了很多常见的 Mac 剪贴板应用程序,但要么 UI 界面过于简陋(丑陋),要么太花哨。所以我一直在寻找一个符合我的使用习惯的剪贴板应用程序。
这天我又看到了一篇:
在里面我试了好几个应用,要不就是收费有限制,要不就是在打开时不会跟随屏幕(这个很重要,具体场景就是,我在开发时,使用了两个屏幕,但是唤起剪贴板时,一直固定在主屏幕,导致我的头一直需要转....)。
在试了前面几个之后,我看到了它!
简约但美观的界面,而且下载下来之后也发现剪贴板📋也能够跟随我的鼠标位置切换屏幕。
他直接通过快捷键快速选中1-10条剪贴记录,以及单击选中条数后按下Enter进行粘贴。但!!!我很快就发现了,他居然没有双击直接粘贴的功能!所以这就是标题以及本文的主要内容了,如何在0基础不懂Swift的情况下,给这个软件下一个双击触发复制的功能。
Yippy开源项目
ChatGPT的角色
ChatGPT对我来说非常有用,尤其是当我不熟悉Swift语言或者需要修改Yippy项目代码时。我只需要简要描述我的问题或需求,ChatGPT就能够为我提供相应的解决方案。即使我对Swift语言不熟悉,ChatGPT也可以帮助我理解代码并提供代码修改的建议。
II.准备工作
了解Swift语言和基本语法
在我在下班⬅坐班车的时候,花了30分钟在掘金简单了解了一下Swift:
III.研究Yippy代码
了解项目的代码结构
直接问ChatGPT
大致可以猜到逻辑代码是在Windows目录下的
展开之后直接进行排除法,大致范围限定在Yippy这个目录下:
探索项目中的粘贴功能
关键词搜索
首先项目已经自带了按下Enter键进行粘贴(paste)行为。以我一个切图仔的思路,大胆猜测,肯定有一个处理粘贴逻辑的代码块,拥有着关键词key或者paste。
直接搜索paste:
看这函数命名以及调用,不用想了,相关的逻辑肯定在这个文件里面。 现在进入具体代码进行查看,有这样的一段代码:
阅读这段代码,大致理解了它是通过链式调用监听键盘行为,绑定相应的回调函数。然后,我发现enter实际上被命名为return,我就说之前我的搜索怎么一直没有成功....
IV. 实现双击粘贴功能
设计双击粘贴功能的实现方案
现在,我需要做的就是找到视图View以及逻辑Controller相互结合的代码块。
我分两次询问了GPT:
大概进行了一下我的理解:
要做到在View中,调用一个Controller的代码,需要通过一个YippyTableViewDelegate来进行中介转发:
在Controller中确实出现了很多Delegate的字眼,直接进入YippyTableViewDelegate文件进行查看,
可以了解到其实他已经定义过两个需要在
View触发的Controller事件,因为Swift中函数调用时的参数需要写句听名称(速成中了解到的),那我直接搜索他定义的一个参数名selectedDidChange:
看这结果,以及前面cahtGPT的举例,可以肯定,第一处在View层中触发事件,中间处类似于定义。最后处位于Controller,那肯定就是写触发具体执行的事件。
参照下面两处定义,补充上我们自己的定义:
参数类型个数不一样其实调用的函数也不一样。参考ts中学的。
再写第三处,在我的理解中应该类似于
js中的this,指向当前实例化的类,那我直接就在这里调用了类中写好了的pasteSelected方法。
现在就差最后一步了:在View层中监听双击事件,并在其中调用Delegate定义的方法。
搜索发现,调用的逻辑只需要写这样的一段代码,然后删除后面两个参数,自然就会变成调用我们定义的那个函数。
最后一步要解决的,那就是如何监听View的双击事件:
因为第二种方法有点像js中的table.onclick=myOnClick(),最后也是使用它来进行触发。
调试和测试新功能的实现
哈哈哈,最后才是跑代码,过程需要使用Xcode扒拉扒拉的,值得一提的是,项目直接拉下来 居然跑不了...
差不多得有五六个报错,最后还是chatGPT帮我解决的。
演示
V. 结论
整个添加功能的过程大概花了两个多钟,然后花了一个钟去研究Xcode的打包。
诶,有人知道没开发者账号怎么打包之后给别的mac用吗
对于几百$的认证费用...
我总结以下六点......