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

发布时间 - 2026-01-11 02:43:48    点击率:

 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;


# ios  # 键盘工具栏  # iOS应用开发中监听键盘事件的代码实例小结  # iOS中的UIKeyboard键盘视图使用方法小结  # iOS实现输入框跟随键盘自动上移的实例代码  # iOS项目开发键盘弹出遮挡输入框问题解决方案  # h5 ios输入框和键盘的兼容性优化指南  # iOS开发第三方键盘处理实例代码  # iOS自定义键盘切换效果  # IOS数字键盘左下角添加完成按钮的实现方法  # iOS中只让textField使用键盘通知的实例代码  # iOS自定义身份证键盘  # 弹出  # 所示  # 输入框  # 收出  # 图中  # 呼出  # 栏上  # selector  # addObserver  # keyboardWillShow  # defaultCenter  # placeholder  # addSubview  # NSNotificationCenter  # screen_Width  # screen_Height  # frame  # buttonWithType  # losebtn  # UIButton 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么调用外部API_Laravel Http Client客户端使用  使用spring连接及操作mongodb3.0实例  lovemo网页版地址 lovemo官网手机登录  JS经典正则表达式笔试题汇总  Laravel如何发送系统通知?(Notification渠道示例)  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何快速生成ASP一键建站模板并优化安全性?  JavaScript如何实现音频处理_Web Audio API如何工作?  手机软键盘弹出时影响布局的解决方法  bootstrap日历插件datetimepicker使用方法  活动邀请函制作网站有哪些,活动邀请函文案?  LinuxCD持续部署教程_自动发布与回滚机制  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  html如何与html链接_实现多个HTML页面互相链接【互相】  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何为不同团队 ID 动态生成多个非值班状态按钮  长沙企业网站制作哪家好,长沙水业集团官方网站?  详解Android图表 MPAndroidChart折线图  香港服务器租用每月最低只需15元?  如何快速搭建高效可靠的建站解决方案?  Laravel如何实现文件上传和存储?(本地与S3配置)  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  大同网页,大同瑞慈医院官网?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何使用Service Container和依赖注入?(代码示例)  网站制作免费,什么网站能看正片电影?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel怎么清理缓存_Laravel optimize clear命令详解  在Oracle关闭情况下如何修改spfile的参数  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel Docker环境搭建教程_Laravel Sail使用指南  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  javascript中的try catch异常捕获机制用法分析  创业网站制作流程,创业网站可靠吗?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何在搬瓦工VPS快速搭建网站?  大连 网站制作,大连天途有线官网?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  详解Android——蓝牙技术 带你实现终端间数据传输  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何在香港服务器上快速搭建免备案网站?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  java中使用zxing批量生成二维码立牌  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧