ios 输入法扩展_GitHub - insoxin/pinyin: 一款iOS13第三方输入法,供分享、学习和拓展之用。...

INSO输入法-为输入提速! for iPhone

https://pinyin.isoyu.com/

一款iOS13第三方输入法,供分享、学习和拓展之用。

iOS13第三方输入法实例-Swift版

1、写这个项目的目的

输入法开发在众多App中较为小众,因为现实中,不仅仅是输入个字母、数字、字符或者表情就行的。

输入汉字,要想做到基本的需求,你得有联想、模糊查询、热词搜索、智能纠错、自定义词库等等,还不包括语音输入,手写输入,拍照输入……。

所以要想做成一款优质的输入法,需要一定的技术积累,包括自然语言处理的经验等等,也就不奇怪,在这方面,搜狗、百度和腾讯都很厉害了,毕竟都有很强的搜索班底。

但是对于个人开发者而言,其实也可以试试的,因为相应的技术已经不少已经成熟,很多可以拿过来直接用,还有就是要让自己的App有特点,有吸引人的地方,比如简便易用,专注某项输入的开发(表情输入法),或者自设计某个独特的功能点。

现阶段呢,关于输入法的文档非常少,除了几篇概括性、纲领性的文章,也就没了其他详解文章。这也是我写这个项目的主要目的,希望有志于开发输入法的开发者在摸索过程中,在爬坑过程中,能少走很多弯路。

2、添加输入法

这一步其实各大教程都有的,为了尽可能详细,就截几张图吧:

创建一个singleview Application,这个就是输入法的设置界面。

添加一个target,即app extension(扩展),选择输入法扩展

大概的目录结构如下

//主要的viewcontorller:keyboardviewcontroller,在这里实现输入法的界面、输入事件等等

3、输入法展示,包括一些功能点

首先看个大概的输入法界面吧。

总体来讲,还是挺美观的,哈哈,这是模仿的系统的字母键盘界面,包括字母的输入、大小写切换、长按快速删除、地球键切换等等。

这里面的所有按键都是自己绘制的,包括字母按键、shift(大小写切换键)、delete(删除键)和输入法切换键(地球键)。

3.1字母输入

动态图如下:

3.2大小写切换>

单击shift这个按键,会允许当前首字母大写,并重新绘制界面。

双击shift按键,会开启全部字母大写设置,并重新绘制界面

3.3删除功能

短按delete按键,每次删除一个字符

长按delete按键,加速删除,要注意下,你可能感觉观看效果删除缓慢,实际效果不是这样的,但是我转 gif 时,不知怎的就是慢,暂时就这样

4、功能点解析

4.1 界面绘制和布局

刚开始开发输入法,开发者也许觉得,这不就是一个个button么,直接用button就行了,但是后续会遇到很多麻烦事情。比如滑动输入、键盘反应不灵敏、长按效果不加等等。

为了解决这些问题,所以本项目都是用自定义View来实现button的效果,自己绘制传入的字符。代码如下:

为了实现按键的效果,重载touchesBegan,touchesEnd这两个方法,然后在其中添加backView(背景图,暗一点),即可实现按键效果。

/*---------------------------普通按键的自定义View---------------------------*/

class NormalButton: UIView

{

var buttonTitle:String!; //按键上的title

var fillColor:UIColor! //填充背景色

override init(frame: CGRect)

{

super.init(frame: frame);

self.fillColor = UIColor.whiteColor();//初始化为白色

self.translatesAutoresizingMaskIntoConstraints = false;

self.layer.cornerRadius = 6.0;

self.clipsToBounds = true;

self.layer.masksToBounds = true;

self.multipleTouchEnabled = false

self.exclusiveTouch = true;

}

required init?(coder aDecoder: NSCoder)

{

super.init(coder: aDecoder);

}

override func touchesBegan(touches: Set, withEvent event: UIEvent?)

{

super.touchesBegan(touches, withEvent: event)

self.addSubview(BackButtonView(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值