`

完美实现自定义软键盘

 
阅读更多

原文

 

我相信是懒人推动了世界的发展,既然iphone有了自己的软件盘,我们什么还要自己实现其功能呢。
so,只要寄生在上面就行了。

通过这篇文章给的灵感:
为UIKeyboardTypeNumberPad增加自定义按键
http://www.codeios.com/thread-805-1-1.html


思路:
1.用静态方法找到应用程序当前view(window)中的UIKeyboard的view
2.在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)
3.根据需要调整系统键盘的大小以满足你想要的尺寸
4.给自己的键盘view上的button添加方法,实现功能

主要代码:
添加自身类为键盘事件的观察者:

  1. [[NSNotificationCenter defaultCenter] addObserver:self
  2.                                              selector:@selector(keyboardWillShow:)
  3.                                                  name:UIKeyboardWillShowNotification
  4.                                                object:nil];
复制代码
核心思路代码:
  1. - (void)keyboardWillShow:(NSNotification *)note
  2. {  
  3.     UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//知识点
  4.     for(int i=0; i<[tempWindow.subviews count]; i++)
  5.     {
  6.         keyboard = [tempWindow.subviews objectAtIndex:i];
  7.         if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
  8.         {
  9.             [keyboard setFrame:CGRectMake(0, 460, 320, 345)];
  10.             [self congfigKeypad];
  11.             
  12.             [keyboard addSubview:keyPadView1];
  13.             
  14.         }
  15.     }
  16. }
复制代码
比如配置方法可以是这样:
  1. -(void)congfigKeypad
  2. {
  3.    SearBtn *one = [[SearBtn alloc] initWithFrame:CGRectMake(81, 3, kNumPadW, kNumPadH) index:1 ContextString:@"1" type:kNumPadType];
  4.     [one setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
  5.     [one addTarget:self action:@selector(buttonClickAtIndex:) forControlEvents:UIControlEventTouchUpInside];
  6.         //......略
  7. }
复制代码
添加NSMutalbeString作为文本域字串的容器,点击button后append的button对应的字串。
  1. - (void)buttonClickAtIndex:(id)sender
  2. {
  3.     SearBtn *btnItem = (SearBtn*)sender;
  4.     NSString *str = btnItem->btnText;
  5.     [s_text appendString:str];
  6.     [sBar setText:s_text];
  7. }
复制代码
再实现一个deleteChar的方法作为退格键
思路:
  1. if ([s_text length] > 0)
  2.     {
  3.         NSRange rang;
  4.         rang.location = [s_text length] - 1;
  5.         rang.length = 1;
  6.         [s_text deleteCharactersInRange:rang];
  7.     }
复制代码
现在点击各种文本域,应该就可以现实自己的键盘了。

继续优化
用textfield的代理方法控制键盘的字串类型,长度,和响应消失:
6_388_bdd33892fa6924b.png 

6_388_376c339378175f0.png


分享到:
评论

相关推荐

    QT自制虚拟键盘,数字、字母大小写、符号等输入均包含,代码非常简单易懂

    QT自制软键盘, 最完美、最简单、跟自带虚拟键盘一样。 特点: 1.键盘界面保持在所有界面最上方。 2.点击键盘按钮不会改变底层文本输入框焦点。 3.通过模拟键盘点击事件完成键盘输入文本信息。 4.包含各种键盘...

    电脑分身克隆软件

    (软PC)可以和软路由一样完全摆脱硬件**,只需要软件安装可实现路由器(电脑)所有功能。早在2004年中国最大的计算机销售商联想就推出过一台主机配两个显示器和两套键盘鼠标的产品,可惜市场反响不好高层已经放弃这...

    TrueCrypt的国内延伸版本CnCrypt V1.11(单一文件绿色版)

    增加了密码输入软键盘功能 增加了磁盘痕迹擦除工具 增加了悬浮框,支持拖放加载,右键功能菜单等。 托盘菜单支持快速加载,支持加载历史记录,加载收藏卷等功能。 加密卷创建向导增加了向导步聚显示 界面细节的诸多...

    TrueCrypt的国内延伸版本CnCrypt1.0

    增加了密码输入软键盘功能 增加了磁盘痕迹擦除工具 增加了便携磁盘加密卷创建和加载功能 增加了与Windows资源管理器的集成(加载加密卷,保存至加密卷,粉碎选择文件) 增加了悬浮框,支持拖放右键等功能 在子界面中...

    word使用技巧大全

    2.利用软键盘功能法 12 3.利用英文字体设置 12 ★快速输入大写中文数字 13 ★将姓名按姓氏笔划排序 13 ★在Word中插入当前的日期和时间 13 ★锁定插入的日期和时间 13 ★利用合并字符功能设置上下标 13 ★使用⑩以上...

    网趣网上购物系统HTML静态版v2012版

    众所周知,Html静态版购物系统支持商品图大小的自定义功能!此功能非常适用,由于改变原商品图后,背景图大小不变,因此增加了商品图开关功能,对于个别需要调整图片大小的客户,保需要把商品背景图关闭即可,不...

    网趣网上购物系统时尚版 V9.0

    新版系统对商城的帮助中心进行了改进,可自定义帮助中心的栏目,并自由添加栏目信息,后台完全控制,可任意增加修改或删除帮助栏目及具体信息,这样大大方便了不同商家需要设置不同栏目的需求,更适应不同行业间的...

    网趣网上购物系统时尚版

    新版系统对商城的帮助中心进行了改进,可自定义帮助中心的栏目,并自由添加栏目信息,后台完全控制,可任意增加修改或删除帮助栏目及具体信息,这样大大方便了不同商家需要设置不同栏目的需求,更适应不同行业间的...

    网趣网上购物系统的部分特点与精华

    新版系统对商城的帮助中心进行了改进,可自定义帮助中心的栏目,并自由添加栏目信息,后台完全控制,可任意增加修改或删除帮助栏目及具体信息,这样大大方便了不同商家需要设置不同栏目的需求,更适应不同行业间的...

    网趣网上购物系统时尚版V13.0

    新版系统对商城的帮助中心进行了改进,可自定义帮助中心的栏目,并自由添加栏目信息,后台完全控制,可任意增加修改或删除帮助栏目及具体信息,这样大大方便了不同商家需要设置不同栏目的需求,更适应不同行业间的...

Global site tag (gtag.js) - Google Analytics