如何在 iOS 上写一款输入法?这个问题已经被很多人解答过了。你可以轻易通过 Google 找到一篇详细的教程。但是,在 macOS 上写一款输入法就没那么简单了。
好吧,严格来讲,是指用 Swift 在 macOS 上写一款输入法很难。主要的原因是 从来没有人做过这件事情 。
目前能够获取的资料,除了苹果官方的 API 说明(一点用也没有),以及官方的 demo(很详细但过时了,而且[……]
如何在 iOS 上写一款输入法?这个问题已经被很多人解答过了。你可以轻易通过 Google 找到一篇详细的教程。但是,在 macOS 上写一款输入法就没那么简单了。
好吧,严格来讲,是指用 Swift 在 macOS 上写一款输入法很难。主要的原因是 从来没有人做过这件事情 。
目前能够获取的资料,除了苹果官方的 API 说明(一点用也没有),以及官方的 demo(很详细但过时了,而且[……]
Xcode 8 正式版已经发布,我要在第一时间迁移我的项目到 Swift 3 —— 毕竟这是趋势。
在迁移的过程当中我遇到了很多问题——比如 Xcode 提供的自动迁移工具根本没有用,在我等待了两个多小时之后,我放弃了,选择手动迁移——毕竟,Xcode 的自动更正也是很好用的。
然而——在迁移过程当中,Xcode 一直处在 “indexing” 中,功能也不怎么全……可能是由于 Swi[……]
根据国家的规定,所有网盘必须接受审查!(可能是因为女神太多了,你懂的 =_=),然后大部分网盘纷纷停止服务,大厂商里现在只有某度云还在运营。但是,你存到某度云里的所有资料都要接受审查(女神的电影会变成15秒教育片,这还是轻的;要是你敢说dang不好,或者把类似的文件存到某度云里,明天就会有人来给你送快递…)所以,根据这个背景环境,我需要一个属于自己的网盘(不管你需要不需要,至少我需[……]
我们都直到,第三方输入法比如搜狗输入法有个经典的手势操作——在键盘上左右划动即可移动光标。而这个功能我自己也十分的常用,所以,我想要自己来实现它。
首先我想到的就是 UISwipeGestureRecognizer ,不过结果可想而知,划动一次只能移动一格光标,这可不是我想要的。
看来唯一的办法就是用 UIPanGestureRecognizer[……]
在一开始,Swift 里并没有提供正则表达式的支持,所以我们只能自己来封装,比如说写一个结构体,像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
struct MyRegex { let regex: NSRegularExpression? init(_ pattern: String) { regex = try? NSRegularExpression(pattern: pattern, options: .CaseInsensitive) } func match(input: String) -> Bool { if let matches = regex?.matchesInString(input, options: [], range: NSMakeRange(0, (input as NSString).length)) { return matches.count > 0 } else { return false } } } |
其实现在 Swift 已经有了对正则表达式的支持,我们只需要这样:
1 |
let result = name.rangeOfString("^[a-z]", options: .RegularExpressionSearch) |
直接就能获取正则捕获的内容了。
获取到的是一个[crayon[……]
大多数情况下,如果我们想要获取数组中某一段的内容(比如说从前到中间,或者数组最后的某些值),这时候就需要遍历数组来给新的数组赋值:
1 2 3 4 5 6 7 |
let fixedArray = [1,2,3,4,5,6] var myArray:[Int] = [] for (i,n) in fixedArray.enumerate() { if i > 3 {break} myArray.append(n) } |
这样数组短了还好说无所谓,但如果数组比较大而我们需要的值又比较多,那遍历起来显然就很浪费时间。
Swift 中本身就提供了对数组进行拆分的功能,这个机制是一个叫做 [crayon-676a2b[……]
使用 python 的时候,经常需要下载一些第三方的框架,好在 python 也有类似 apt 的包管理工具,pip。
不过,pip 虽然能够管理包,却没有切换镜像源的功能,而我们下载的包,大多数都在国外大型的代码托管服务器上,这就导致了往往几百KB的包要下载一个小时。
这里我们假定,作为程序员的你,已经给电脑部署了 HTTPS 以及 HTTP 代理,我们之前也讲过[……]