当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS中键盘 KeyBoard 上添加工具栏的方法

iOS中键盘 KeyBoard 上添加工具栏的方法

2019年07月24日  | 移动技术网移动技术  | 我要评论

 ios中 键盘 keyboard 上怎么添加工具栏?

如图中所示 在键盘上面加一条工具栏

大致思路是提前创建好工具栏,在键盘弹出的时候将工具栏显示出来,在键盘消失的时候让工具栏隐藏

上代码

设置两个变量

uiview * _toolview; //工具栏 
uitextfield *textfield;// 输入框 呼出键盘用 

创建工具栏 输入框 添加键盘弹出 消失的通知

- (void)viewdidload { 
 [super viewdidload]; 
 // do any additional setup after loading the view, typically from a nib. 
 textfield = [[uitextfield alloc]initwithframe:cgrectmake(10, 64, 120, 60)]; 
 textfield.placeholder = @"测试"; 
 [self.view addsubview:textfield]; 
 //增加监听,当键盘出现或改变时收出消息 
 [[nsnotificationcenter defaultcenter] addobserver:self 
            selector:@selector(keyboardwillshow:) 
             name:uikeyboardwillshownotification 
            object:nil]; 
 //增加监听,当键退出时收出消息 
 [[nsnotificationcenter defaultcenter] addobserver:self 
            selector:@selector(keyboardwillhide:) 
             name:uikeyboardwillhidenotification object:nil]; 
 //初始化工具栏 
 _toolview = [[uiview alloc]init]; 
 _toolview.frame = cgrectmake(0, screen_height, screen_width, 50); 
 [self.view addsubview:_toolview]; 
 uibutton *losebtn = [uibutton buttonwithtype:uibuttontypecustom]; 
 losebtn.frame = cgrectmake(20, 0, 50, 50); 
 [losebtn addtarget:self action:@selector(btnclick) forcontrolevents:uicontroleventtouchupinside]; 
 [losebtn settitlecolor:[uicolor blackcolor] forstate:uicontrolstatenormal]; 
 [losebtn settitle:@"收起" forstate:uicontrolstatenormal]; 
 [_toolview addsubview:losebtn]; 
 uibutton *imagebtn = [uibutton buttonwithtype:uibuttontypecustom]; 
 [imagebtn settitle:@"图片" forstate:uicontrolstatenormal]; 
 imagebtn.frame = cgrectmake(screen_width-100, 0, 50, 50); 
 [imagebtn settitlecolor:[uicolor blackcolor] forstate:uicontrolstatenormal]; 
 [imagebtn addtarget:self action:@selector(imagebtnclick) forcontrolevents:uicontroleventtouchupinside]; 
 [_toolview addsubview:imagebtn]; 
 uibutton *camerabtn = [uibutton buttonwithtype:uibuttontypecustom]; 
 [camerabtn settitle:@"相机" forstate:uicontrolstatenormal]; 
 camerabtn.frame = cgrectmake(screen_width-50, 0, 50, 50); 
 [camerabtn settitlecolor:[uicolor blackcolor] forstate:uicontrolstatenormal]; 
 [camerabtn addtarget:self action:@selector(camerabtnclick) forcontrolevents:uicontroleventtouchupinside]; 
 [_toolview addsubview:camerabtn]; 
 uibutton *canclebtn = [uibutton buttonwithtype:uibuttontypecustom]; 
 [canclebtn settitle:@"取消" forstate:uicontrolstatenormal]; 
 canclebtn.frame = cgrectmake(screen_width-150, 0, 50, 50); 
 [canclebtn settitlecolor:[uicolor blackcolor] forstate:uicontrolstatenormal]; 
 [canclebtn addtarget:self action:@selector(canclebtnbtnclick) forcontrolevents:uicontroleventtouchupinside]; 
 [_toolview addsubview:canclebtn]; 
} 

实现键盘通知的方法

#pragma mark 当键盘出现或改变时调用 
- (void)keyboardwillshow:(nsnotification *)anotification 
{ 
 //键盘弹出时显示工具栏 
 //获取键盘的高度 
 nsdictionary *userinfo = [anotification userinfo]; 
 nsvalue *avalue = [userinfo objectforkey:uikeyboardframeenduserinfokey]; 
 cgrect keyboardrect = [avalue cgrectvalue]; 
 float keyboardheight = keyboardrect.size.height; 
 // nslog(@"%ld",(long)keyboardheight); 
 [uiview animatewithduration:0.1 animations:^{ 
  _toolview.frame = cgrectmake(0, screen_height-keyboardheight-50, screen_width, 50); 
 }]; 
} 
#pragma mark 当键退出时调用 
- (void)keyboardwillhide:(nsnotification *)anotification 
{ 
 //键盘消失时 隐藏工具栏 
 [uiview animatewithduration:0.1 animations:^{ 
  _toolview.frame = cgrectmake(0, screen_height+50, screen_width, 50); 
 }]; 
} 

给工具栏上的各个按钮实现点击事件

- (void)btnclick{ 
 [textfield resignfirstresponder]; 
} 
- (void)imagebtnclick{ 
} 
- (void)camerabtnclick{ 
} 
- (void)canclebtnbtnclick{ 
} 

ps:下面看下ios 键盘上方增加工具栏的代码。

具体代码如下所示:

uitoolbar *keyboarddonebuttonview = [[uitoolbar alloc] init];
[keyboarddonebuttonview sizetofit];
uibarbuttonitem *donebutton = [[uibarbuttonitem alloc] initwithtitle:@"done"
                style:uibarbuttonitemstylebordered target:self
                action:@selector(doneclicked:)];
[keyboarddonebuttonview setitems:[nsarray arraywithobjects:donebutton, nil]];
txtfield.inputaccessoryview = keyboarddonebuttonview;

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网