iPhone应用之自定义键盘开发代码


  本文标签:iPhone 键盘

  iphone应用中的自定义键盘是本文要介绍的内容,在坛子里逛了一圈,看了一篇自定义键盘的文章,于是与大家分享一下,我相信是懒人推动了世界的发展,既然iphone有了自己的软件盘,我们什么还要自己实现其功能呢  。so,只要寄生在上面就行了  。不多说,来看详细内容  。

  思路:

  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.     }  

  比如配置方法可以是这样:

  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.         //......略  

  添加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];  

  再实现一个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的代理方法控制键盘的字串类型,长度,和响应消失  。

  iPhone应用之自定义键盘 

  iPhone应用之自定义键盘

  小结:iPhone应用之自定义键盘开发代码的内容介绍完了,希望通过本文的学习能对你有所帮助!