UI-隐藏键盘
键盘的出现于隐藏(代码实现)=================================
1、通知案例:
#import "ViewController.h"
#import "UIView+FrameExtension.h" // 可以自己写,以后用着方便
#define kDeviceHeight [UIScreen mainScreen].bounds.size.height
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 设置视图的背景色
self.view.backgroundColor = [UIColor lightGrayColor];
// 添加第一个文本框 假定位置
UITextField *firstField = [[UITextField alloc]initWithFrame:CGRectMake(50, 300, 200, 40)];
firstField.backgroundColor = [UIColor whiteColor];
[self.view addSubview:firstField];
// 添加第一个文本框
UITextField *secondField = [[UITextField alloc]initWithFrame:CGRectMake(firstField.x, firstField.bottom + 50, firstField.width , firstField.height)];
[self.view addSubview:secondField];
secondField.backgroundColor = [UIColor whiteColor];
// 注册键盘显示的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showKeyboard:) name:UIKeyboardWillShowNotification object:nil];
// 注册键盘隐藏的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard: ) name:UIKeyboardWillHideNotification object:nil];
}
// 键盘弹出时执行这个方法,
-(void)showKeyboard:(NSNotification *)notification{
// 定义一个文本框,指向正在编辑的文本框,也就是弹出键盘的文本框
UITextField *txtField;
// 今次遍历当前视图的所有子视图, subViews数组保存的是当前视图所有的子视图
for (UIView *subView in self.view.subviews) {
// 如果这个子视图是一个文本框的话,isKindOfClass方法可以判断某个变量是不是某个类型的变量
if ([subView isKindOfClass:[UITextField class]]) {
// 先把这个子视图转化为文本框
UITextField *tempField = (UITextField *)subView;
// 再判断这个文本框是不是正在编辑
if (tempField.isEditing ) {
// 如果这个文本框正在编辑,就是我要找的文本框,中断循环
txtField = tempField;
break;
}
}
}
NSLog(@"%@", notification);
// 获取通知的userInfo属性
NSDictionary *userInfoDict = notification.userInfo;
// 通过键盘通知的userInfo属性获取键盘的bounds
NSValue *value = [userInfoDict objectForKey:UIKeyboardBoundsUserInfoKey];
// 键盘的大小
CGSize keyboardSize = [value CGRectValue].size;
// 键盘高度
CGFloat keyboardHeight = keyboardSize.height;
CGFloat offset = kDeviceHeight - keyboardHeight - txtField.bottom ;
if (offset < 0 ) { //这种情况下需要上移
offset = offset - 10 ; //保存上移的高度
[UIView animateWithDuration:0.5 animations:^{
self.view.transform = CGAffineTransformMakeTranslation(0, offset );
}];
}
}
-(void)hideKeyboard:(NSNotification *)notification{
[UIView animateWithDuration:2 animations:^{
self.view.transform = CGAffineTransformIdentity;
}];
}
// 点击屏幕空白时隐藏键盘
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
@end



二、辞去第一响应者
1、[self.view endEditing:YES]; //编辑结束 点击屏幕会退出键盘
2、[firstField resignFirstResponder]; //辞去第一响应者
3[firstField becomeFirstResponder]; //成为第一响应者
UI-隐藏键盘的更多相关文章
- QF——UI之几种常用的隐藏键盘的方法
怎么在填写完UITextField之后,点击空白处,隐藏软键盘. 下面两个方法都可以隐藏键盘 [tf resignFirstResponder]; 停止textfield的第一响应者 [self.vi ...
- iOS之 利用通知(NSNotificationCenter)获取键盘的高度,以及显示和隐藏键盘时修改界面的注意事项
我们在开发中会遇到这样的情况:调用键盘时需要界面有一个调整,避免键盘遮掩输入框. 但实现时你会发现,在不同的手机上键盘的高度是不同的.这里列举一下: //获取键盘的高度 /* iphone 6: 中文 ...
- iOS之隐藏键盘的方式
一.//触摸空白处隐藏键盘 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [_feedBackTextView r ...
- ios隐藏键盘
1.点击页面空白处隐藏键盘 给viewController里面复写-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event方法,在 ...
- UITextView 点return 隐藏键盘
iOS开发中,发现UITextView没有想UITextField中textFieldShouldReturn:这样的方法,那么要实现UITextView return键隐藏键盘,可以通过判断输入的字 ...
- ios-点击屏幕,隐藏键盘
ios-点击屏幕,隐藏键盘 - (void)getFirstRegist{ //结束键盘编辑 __weak typeof(self)weakSelf = self; UITapGestureRecog ...
- IOS 点击空白处隐藏键盘的几种方法
IOS 点击空白处隐藏键盘的几种方法 IOS7 点击空白处隐藏键盘的几种方法 IOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能 ...
- ios隐藏键盘的方式简单应用
iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏, ...
- iOS 使用 UIMenuController 且不隐藏键盘的方法
iOS 使用 UIMenuController 且不隐藏键盘的方法 在键盘显示的时候使用 UIMenuController 弹出菜单,保持键盘显示且可输入的状态. 实现方法有 修改响应链(推荐) 遵循 ...
- IOS7 点击空白处隐藏键盘的几种方法
IOS7 点击空白处隐藏键盘的几种方法 iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们 ...
随机推荐
- Xilinx中解决高扇出的方法
Fanout,即扇出,指模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛.因此,在写代码时应尽量避免高扇出的情况.但是,在某些特殊情况下, ...
- python16_day18【Django_Form表单、分页】
一.表单 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.Form类 创建Form类时,主 ...
- Java并发(6):concurrent包中的Copy-On-Write容器
一. concurrent包介绍 在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java ...
- httpmessageconverter requestbody responsebody
@ResponseBody @RequestMapping("/testHttpMessageConverter") public String testHttpMessageCo ...
- Java技术学习路线
转载 作者:David 链接:https://www.zhihu.com/question/25255189/answer/86898400来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- Codeforces Round #396 (Div. 2) E. Mahmoud and a xor trip
地址:http://codeforces.com/contest/766/problem/E 题目: E. Mahmoud and a xor trip time limit per test 2 s ...
- 请求库之requests,selenium
requests模块 一.介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:reques ...
- Django如何把数据库里的html格式输出到前端
只需在HTML页面中加入{% autoescape off %}即可! {% autoescape off %} 需要显示的数据 (% endautoescap %}
- 分布式链路监控与追踪系统Zipkin
1.分布式链路监控与追踪产生背景2.SpringCloud Sleuth + Zipkin3.分布式服务追踪实现原理4.搭建Zipkin服务追踪系统5.搭建Zipkin集成RabbitMQ异步传输6. ...
- HttpStatusCode
https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netframework-4.7.2 422 Un ...