以下是一个前期的基本功能思路仅作为备忘(这段代码只是前期一个demo,只是针对字母编码的一个业务逻辑,只是一个大体的思路,后期的改良基本上推翻了前期所有的代码,但是前期的代码中的思想仍然得到保留),正式版已经完成,由于经过多次改良后代码过多这里就不放出来了,正式版的代码经过改良后打英文表示五笔编码,打其它字符或者数字时直接上屏,在输入编码后再选数字表示选择提示字上屏,与真实pc端输入法达到一样的效果。

- (void)tfWrite {

NSMutableString *tmp = [NSMutableStringstring];

NSString *strLow = [self.tf.textlowercaseString];

tmp = [[NSMutableString alloc] initWithFormat:strLow,nil];

unichar cc;

if (tmp.length >=1) {

cc = [tmp characterAtIndex:tmp.length-1];

}

NSLog(@"cc:%c",cc);

if ((cc >= '1' && cc <='5') || (cc >='a' && cc <='z') || cc ==' ') {

if (1 ==self.tf.text.length && cc >='1' && cc <= '5') {

self.tf.text =@"";

}

if (self.tf.text.length >=2 && (cc >='1' && cc <='5')) {

int indexTmp = [[NSNumbernumberWithUnsignedChar:cc]intValue]-'0';

NSLog(@"indexTmp:%d",indexTmp);

self.tf.text =@"";

if (self.wordTmp ==nil) {

self.wordLabel.text = [self.wordArray[indexTmp-1]copy];

}else{

self.wordLabel.text = [self.wordTmpstringByAppendingString:[self.wordArray[indexTmp-1]copy]];

}

self.wordTmp = [self.wordLabel.textcopy];

}

if (4 ==self.tf.text.length && (cc >='a' && cc <= 'z')) {

self.states =YES;

}

if (5 ==self.tf.text.length && (cc >='a' && cc <= 'z')) {

self.tf.text =@"";

if (self.wordArray.count >0) {

if (self.wordTmp ==nil) {

self.wordLabel.text = [self.wordArray[0]copy];

}else{

self.wordLabel.text = [self.wordTmpstringByAppendingString:[self.wordArray[0]copy]];

}

}

self.wordTmp = [self.wordLabel.textcopy];

}

if (cc == ' ') {

if (self.tf.text.length ==1) {

self.tf.text =@"";

return;

}

self.tf.text =@"";

if (self.wordTmp ==nil) {

self.wordLabel.text = [self.wordArray[0]copy];

}else{

self.wordLabel.text = [self.wordTmpstringByAppendingString:[self.wordArray[0]copy]];

}

self.wordTmp = [self.wordLabel.textcopy];

}

}else {

self.tf.text =@"";

}

if (0 !=self.wordArray.count &&0 !=self.keyArray.count) {

[self.wordArrayremoveAllObjects];

[self.keyArrayremoveAllObjects];

}

for (int i =0; i <self.allKey.count; i++) {

if ([self.allKey[i]hasPrefix:[self.tf.textlowercaseString]]) {

[self.wordArrayaddObject:self.allWord[i]];

[self.keyArrayaddObject:self.allKey[i]];

//暂时只提示5个

if (5 ==self.wordArray.count) {

break;

}

}

}

if (self.states) {

if (1 ==self.wordArray.count) {

self.tf.text =@"";

if (self.wordTmp ==nil) {

self.wordLabel.text = [self.wordArray[0]copy];

}else{

self.wordLabel.text = [self.wordTmpstringByAppendingString:[self.wordArray[0]copy]];

}

self.wordTmp = [self.wordLabel.textcopy];

self.states =NO;

}

}

[self.tableViewreloadData];

}

iOS下86版五笔输入法练习程序(作为备忘,最基本功能的演示demo,版本:0.99版)相关推荐

  1. 基于Linux系统部署新世纪版五笔输入法

    基于Linux系统部署新世纪版五笔输入法 出于工作需要,突然生出学习五笔的想法.五笔有三个版本:86/98/新世纪. 按照新手上路,有新学新的想法,选择了新世纪版. 然后发现了个坑:公司电脑是Linu ...

  2. Linux技巧之Ubuntu11.04下安装极点五笔输入法

    转自:http://os.51cto.com/art/201108/285239.htm Ubuntu11.04是第14个Ubuntu系统发行版本.Ubuntu11.04将支持多点触摸技术,改进用户界 ...

  3. Ubuntu 下安装极点五笔输入法

    Ubuntu 下安装极点五笔输入法     刚刚安装好了 Ubuntu 12.04,但是没有五笔的日子实在不好过,WINDOWS下用习惯了极点五笔,本以为极点的作者不出Linux版的,结果在网上一搜, ...

  4. Ubuntu 12.04下安装极点五笔输入法

    Ubuntu 12.04下安装极点五笔输入法     刚刚安装好了 Ubuntu 12.04,但是没有五笔的日子实在不好过,WINDOWS下用习惯了极点五笔,本以为极点的作者不出Linux版的,结果在 ...

  5. ubuntu18.04.2LTS下如何用五笔输入法 --Linux

    ubuntu18.04.2LTS下自带五笔输入法,不用去单独下载 1.在设置中找到区域和语言 2.点击加号添加输入源 3.选择,选择「汉语」 4.选择「极点五笔」 开始你的五笔输入法之旅-- 友情链接 ...

  6. [Linux]Ubuntu下chrome中五笔输入法不能通过shift切换中英文

    **背景:**鉴于自己前后鼻音和平翘舌不分的缘故,我也是恨下心来使用五笔输入法,在使用的过程中还是有很多问题.其中一个就是在chrome中,五笔输入法不能通过shift(包括其他中英文切换按键)中英文 ...

  7. 在gvim下内置五笔输入法

    我记得原来用过vimim这个vim内置的输入法,还有vim_wubi,我今天搜索了一下找到下载的地址: https://code.google.com/p/vimim-wubi/ 把上面的两个文件下载 ...

  8. ubuntu 下安装98五笔输入法

    断断续续的用ubuntu好几年了,每次安装98五笔输入法都要网上搜一下,这次花了好长时间才找到方法,在此记下来备忘! 打开   应用程序-附件-终端  输入: wget http://ibus.goo ...

  9. ubuntu下安装fcitx五笔输入法

    学习转载于http://demo.netfoucs.com/pipisorry/article/details/39476961 安装fcitx输入法 sudo add-apt-repository ...

  10. Ubuntu下安装极点五笔输入法

    sudo wget http://www.xiit.cn/wp-content/uploads/2011/03/vissible-ibus.tar.gz tar -zxvf vissible-ibus ...

最新文章

  1. Java项目:前台预定+后台管理酒店管理系统(java+SSM+jsp+mysql+maven)
  2. JAVA[Algorithm]--戴克斯特拉
  3. Matlab错误:Y must be a vector or a character array
  4. spark运行时加载hive,hdfs配置文件
  5. ASP.NET Core amp; Docker 实战经验分享
  6. 动手学PaddlePaddle(1):线性回归
  7. 利用ApiPost接口管理工具校验/测试API返回结果是否符合预期
  8. 大数据之-Hadoop3.x_MapReduce_WordCount编写_Reducer---大数据之hadoop3.x工作笔记0090
  9. java 获取路径_java 获取当前类的路径
  10. CAM350 12.1版本安装
  11. 【计算机组成原理】中央处理器(三)—— 数据通路
  12. idea maven tomcat 热部署
  13. 解决 Win11 打不开 Windows 安全中心 (Windows Defender)
  14. 企业级无线无缝漫游之思创漫游3.0 Plus ,三层漫游
  15. html link 怎么设置密码,tplink路由器手机怎么设置密码?
  16. 使用PyTorch实现手写文字识别的学习
  17. 信息流广告投放的技巧
  18. 线索二叉树(前中后序线索化/遍历/画线索)
  19. QGIS操作教程——图说中国人口
  20. 一台云服务器绕过企业微信域名验证本地开发

热门文章

  1. 基于优化LSTM 模型的股票预测
  2. 抽奖活动前端源码-可录入抽奖人名单
  3. Speedpdf——无需下载软件,就可以免费轻松搞定CAJ转word
  4. 谷歌插件.crx文件无法安装
  5. weedfs php,Weed-FS之Volume数据迁移
  6. Zabbix:Lack of free swap space on Zabbix server 解决
  7. vue + element 与 vue element admin 中 tab标签视图 页拖拽(拖动) sortablejs 插件案例
  8. Qt5之图形视图框架(一)
  9. 微信小程序使用Socket
  10. 单片机C51继电器控制C语言,51单片机对继电器的控制