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用吗
对于几百$
的认证费用...
我总结以下六点......