IOS开发UI篇之──键盘添加工具条
来源:互联网 发布:hive sql select into 编辑:程序博客网 时间:2024/06/09 03:33
IOS开发UI篇之──键盘添加工具条
IOS开发中,iphone/ipad/itouch采用的触摸设计,本身没有硬件键盘,一般都是点击输入框之后,弹出一个虚拟键盘出来,因此开发中,经常在完成编辑输入之后,要写程序代码来关闭软键盘的输出,非常繁琐,当然关闭软键盘的方式有很多。本文要分享的是一个键盘顶部工具条的类,通过这个工具条,可以很方便的关闭键盘,而且有上一项,下一项的输入框切换,非常方便,效果如下图所示:
一、KeyBoardTopBar类文件
#import
@interface KeyBoardTopBar : NSObject {
UIToolbar
NSArray
BOOL
BOOL
UIBarButtonItem *prevButtonItem;
UIBarButtonItem *nextButtonItem;
UIBarButtonItem *hiddenButtonItem;
UIBarButtonItem *spaceButtonItem;
UITextField
}
@property(nonatomic,retain) UIToolbar *view;
-(id)init;
-(void)setAllowShowPreAndNext:(BOOL)isShow;
-(void)setIsInNavigationControl
-(void)setTextFieldsArray:(NSArray *)array;
-(void)showPrevious;
-(void)showNext;
-(void)showBar:(UITextField *)textField;
-(void)HiddenKeyBoard;
@end
#import "KeyBoardTopBar.h"
@implementation KeyBoardTopBar
@synthesize view;
//初始化控件和变量
-(id)init{
if((self = [super init])) {
prevButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"上一项"style:UIBarButtonItemStyleBord
nextButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"下一项"style:UIBarButtonItemStyleBord
hiddenButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"隐藏键盘"style:UIBarButtonItemStyleBord
spaceButtonItem = [[UIBarButtonItemalloc]initWithBarButtonSystemI
view = [[UIToolbar alloc]initWithFrame:CGRectMake(0,480,320,44)];
view.barStyle = UIBarStyleBlackTransluce
view.items = [NSArrayarrayWithObjects:prevButtonItem,nextButtonItem,spaceButtonItem,hiddenButtonItem,nil];
allowShowPreAndNext = YES;
textFields = nil;
isInNavigationController
currentTextField = nil;
}
return self;
}
//设置是否在导航视图中
-(void)setIsInNavigationControl
isInNavigationController
}
//显示上一项
-(void)showPrevious{
if(textFields==nil) {
return;
}
NSInteger num = -1;
for (NSInteger i=0; i<[textFields count]; i++) {
if([textFields objectAtIndex:i]==currentTextField) {
num = i;
break;
}
}
if(num>0){
[[textFields objectAtIndex:num] resignFirstResponder];
[[textFields objectAtIndex:num-1 ] becomeFirstResponder];
[self showBar:[textFields objectAtIndex:num-1]];
}
}
//显示下一项
-(void)showNext{
if(textFields==nil) {
return;
}
NSInteger num = -1;
for (NSInteger i=0; i<[textFields count]; i++) {
if([textFields objectAtIndex:i]==currentTextField) {
num = i;
break;
}
}
if(num<[textFields count]-1){
[[textFields objectAtIndex:num] resignFirstResponder];
[[textFields objectAtIndex:num+1] becomeFirstResponder];
[self showBar:[textFields objectAtIndex:num+1]];
}
}
//显示工具条
-(void)showBar:(UITextField *)textField{
currentTextField = textField;
if(allowShowPreAndNext) {
[view setItems:[NSArrayarrayWithObjects:prevButtonItem,nextButtonItem,spaceButtonItem,hiddenButtonItem,nil]];
}
else {
[view setItems:[NSArrayarrayWithObjects:spaceButtonItem,hiddenButtonItem,nil]];
}
if(textFields==nil) {
prevButtonItem.enabled = NO;
nextButtonItem.enabled = NO;
}
else {
NSInteger num = -1;
for (NSInteger i=0; i<[textFields count]; i++) {
if([textFields objectAtIndex:i]==currentTextField) {
num = i;
break;
}
}
if(num>0) {
prevButtonItem.enabled = YES;
}
else {
prevButtonItem.enabled = NO;
}
if(num<[textFields count]-1) {
nextButtonItem.enabled = YES;
}
else {
nextButtonItem.enabled = NO;
}
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
if(isInNavigationController
view.frame = CGRectMake(0, 201-40, 320, 44);
}
else {
view.frame = CGRectMake(0, 201, 320, 44);
}
[UIView commitAnimations];
}
//设置输入框数组
-(void)setTextFieldsArray:(NSArray *)array{
textFields = array;
}
//设置是否显示上一项和下一项按钮
-(void)setAllowShowPreAndNext:(BOOL)isShow{
allowShowPreAndNext = isShow;
}
//隐藏键盘和工具条
-(void)HiddenKeyBoard{
if(currentTextField!=nil) {
[currentTextField
}
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
view.frame = CGRectMake(0, 480, 320, 44);
[UIView commitAnimations];
}
-(void)dealloc {
[view release];
[textFields release];
[prevButtonItem release];
[nextButtonItem release];
[hiddenButtonItem release];
[currentTextField release];
[spaceButtonItem release];
}
@end
二、如何使用
#import "KeyBoardTopBar.h"
NSMutableArray *editFieldArray;
KeyBoardTopBar *keyboardbar;
[keyboardbar
[keyboardbar setIsInNavigationControl
[keyboardbar setTextFieldsArray:editFieldArray];
[self.view addSubview:keyboardbar.view];
-(void)textFieldDidBeginEditing
[keyboardbar showBar:textField];//KeyBoardTopBar的实例对象调用显示键盘方法
}
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- IOS开发UI篇之──键盘添加工具条
- 转 IOS开发UI篇之──键盘添加工具条
- iOS开发 键盘添加工具条(toolbar)
- iOS给键盘添加全局工具条toolbar用于关闭键盘
- IOS开发 键盘添加工具条 退出 上一项 下一项 简单实现
- 键盘添加工具条
- iOS 键盘工具条
- 给键盘添加一个工具条
- iOS开发之UI——键盘弹出屏幕上移
- (0065)iOS开发之工具条UIToolBar
- IOS开发UI篇之──自定义UIActionSheet
- 重写UIPageControl实现自定义按钮
- UITableViewCell自适应高度
- IOS开发网络篇之──ASIHTTPRequest…
- 第三方苹果开发库之ASIHTTPRequest
- XCode 4.x创建ipa文件及提交…
- IOS开发UI篇之──键盘添加工具条
- 使用subversion管理iOS源代码
- NSFileManager基本操作
- 转:在iOS开发中使用FMDB
- iOS-如何让xcode自动检查内存泄露
- 数据存储----归档解档
- 加载UIImage的两种方法的区别
- 归档解档
- ios部分总结