iphone 自定义软键盘的一种笨拙方法
2011-10-18 10:42
337 查看
思路:
1.用静态方法找到应用程序当前view(window)中的UIKeyboard的view
2.在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)
3.根据需要调整系统键盘的大小以满足你想要的尺寸
4.给自己的键盘view上的button添加方法,实现功能
主要代码:
添加自身类为键盘事件的观察者
核心思路代码:
比如配置方法可以是这样:
添加NSMutableString作为文本域字串的容器,点击button后append的button对应的字串。
;
再实现一个deleteChar的方法作为退格键
思路:
现在点击各种文本域,应该就可以现实自己的键盘了。
源代码:KeyBoardDesignDemo
1.用静态方法找到应用程序当前view(window)中的UIKeyboard的view
2.在键盘的view上帖上自己的view,(精彩了,这个自己的view就是你自己键盘,任意发挥,什么类型键盘都可以做了)
3.根据需要调整系统键盘的大小以满足你想要的尺寸
4.给自己的键盘view上的button添加方法,实现功能
主要代码:
添加自身类为键盘事件的观察者
复制代码 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; |
复制代码 - (void)keyboardWillShow:(NSNotification *)note { UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];//获取键盘所在window 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]; //......略 } |
复制代码 - (void)buttonClickAtIndex:(id)sender { SearBtn *btnItem = (SearBtn*)sender; NSString *str = btnItem->btnText; [s_text appendString:str]; [sBar setText:s_text]; } |
再实现一个deleteChar的方法作为退格键
思路:
复制代码 if ([s_text length] > 0) { NSRange rang; rang.location = [s_text length] - 1; rang.length = 1; [s_text deleteCharactersInRange:rang]; } |
源代码:KeyBoardDesignDemo
相关文章推荐
- 一种基于自定义代码的asp.net网站首页根据IP自动跳转指定页面的方法!
- Android Studio中使用自定义Android.jar缺少方法的一种解决方案
- 解决android软键盘弹出有时会遮住EditText输入框的一种方法
- 一种自动的将自定义类序列化为JSON的方法
- 一种自动的将自定义类序列化为JSON的方法
- [置顶] Android自定义View出现android.view.InflateException的一种解决方法
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- 一种自动的将自定义类序列化为JSON的方法
- 在Sharepoint2010中一种自定义调查列表的不允许再次答复提示的处理方法!
- iPhone 游戏开发中使用自定义字体的方法
- iphone程序中实现截屏的一种方法
- iphone程序中实现截屏的一种方法
- iphone游戏开发中使用自定义字体的方法
- 一种基于自定义代码的asp.net网站访问IP过滤方法!
- 一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!
- FMX有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法(firemonkey messaging)
- iphone游戏开发中使用自定义字体的方法
- Qt之自定义搜索框——QLineEdit里增加一个Layout,还不影响正常输入文字(好像是一种比较通吃的方法)
- 一种自动的将自定义类序列化为JSON的方法
- 一种简便获取iPhone IMEI 的方法