iphone应用中的自定义键盘是本文要介绍的内容,在坛子里逛了一圈,看了一篇自定义键盘的文章,于是与大家分享一下,我相信是懒人推动了世界的发展,既然iphone有了自己的软件盘,我们什么还要自己实现其功能呢。so,只要寄生在上面就行了。不多说,来看详细内容。
思路:
1、用静态方法找到应用程序当前view(window)中的UIKeyboard的view
2、在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)
3、根据需要调整系统键盘的大小以满足你想要的尺寸
4、给自己的键盘view上的button添加方法,实现功能
主要代码:
添加自身类为键盘事件的观察者
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
- 1.
- 2.
- 3.
- 4.
核心思路代码:
- (void)keyboardWillShow:(NSNotification *)note
{
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//知识点
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];
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
比如配置方法可以是这样:
-(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];
//......略
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
添加NSMutalbeString作为文本域字串的容器,点击button后append的button对应的字串。
- (void)buttonClickAtIndex:(id)sender
{
SearBtn *btnItem = (SearBtn*)sender;
NSString *str = btnItem->btnText;
[s_text appendString:str];
[sBar setText:s_text];
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
再实现一个deleteChar的方法作为退格键
思路:
if ([s_text length] > 0)
{
NSRange rang;
rang.location = [s_text length] - 1;
rang.length = 1;
[s_text deleteCharactersInRange:rang];
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
现在点击各种文本域,应该就可以现实自己的键盘了。
继续优化
用textfield的代理方法控制键盘的字串类型,长度,和响应消失。
小结:iPhone应用之自定义键盘开发代码的内容介绍完了,希望通过本文的学习能对你有所帮助!