iPhone應(yīng)用之自定義鍵盤開發(fā)代碼
iphone應(yīng)用中的自定義鍵盤是本文要介紹的內(nèi)容,在壇子里逛了一圈,看了一篇自定義鍵盤的文章,于是與大家分享一下,我相信是懶人推動(dòng)了世界的發(fā)展,既然iphone有了自己的軟件盤,我們什么還要自己實(shí)現(xiàn)其功能呢。so,只要寄生在上面就行了。不多說(shuō),來(lái)看詳細(xì)內(nèi)容。
思路:
1、用靜態(tài)方法找到應(yīng)用程序當(dāng)前view(window)中的UIKeyboard的view
2、在鍵盤的view上帖上自己的view,(精彩了,這個(gè)自己的view就是你自己鍵盤,任意發(fā)揮,什么類型鍵盤都可以做了)
3、根據(jù)需要調(diào)整系統(tǒng)鍵盤的大小以滿足你想要的尺寸
4、給自己的鍵盤view上的button添加方法,實(shí)現(xiàn)功能
主要代碼:
添加自身類為鍵盤事件的觀察者
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(keyboardWillShow:)
- name:UIKeyboardWillShowNotification
- object:nil];
核心思路代碼:
- - (void)keyboardWillShow:(NSNotification *)note
- {
- UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//知識(shí)點(diǎn)
- for(int i=0; i<[tempWindow.subviews count]; i++)
- {
- keyboard = [tempWindow.subviews objectAtIndex:i];
- if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
- {
- [keyboard setFrame:CGRectMake(0, 460, 320, 345)];
- [self congfigKeypad];
- [keyboard addSubview:keyPadView1];
- }
- }
- }
比如配置方法可以是這樣:
- -(void)congfigKeypad
- {
- SearBtn *one = [[SearBtn alloc] initWithFrame:CGRectMake(81, 3, kNumPadW, kNumPadH) index:1 ContextString:@"1" type:kNumPadType];
- [one setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
- [one addTarget:self action:@selector(buttonClickAtIndex:) forControlEvents:UIControlEventTouchUpInside];
- //......略
- }
添加NSMutalbeString作為文本域字串的容器,點(diǎn)擊button后append的button對(duì)應(yīng)的字串。
- - (void)buttonClickAtIndex:(id)sender
- {
- SearBtn *btnItem = (SearBtn*)sender;
- NSString *str = btnItem->btnText;
- [s_text appendString:str];
- [sBar setText:s_text];
- }
再實(shí)現(xiàn)一個(gè)deleteChar的方法作為退格鍵
思路:
- if ([s_text length] > 0)
- {
- NSRange rang;
- rang.location = [s_text length] - 1;
- rang.length = 1;
- [s_text deleteCharactersInRange:rang];
- }
現(xiàn)在點(diǎn)擊各種文本域,應(yīng)該就可以現(xiàn)實(shí)自己的鍵盤了。
繼續(xù)優(yōu)化
用textfield的代理方法控制鍵盤的字串類型,長(zhǎng)度,和響應(yīng)消失。
小結(jié):iPhone應(yīng)用之自定義鍵盤開發(fā)代碼的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!