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的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们 ...
随机推荐
- 009-shiro与spring web项目整合【三】验证码、记住我
一.验证码 1.自定义FormAuthenticationFilter 需要在验证账号和名称之前校验验证码 /** * * <p>Title: CustomFormAuthenticati ...
- Angular学习笔记—RxJS与Observable(转载)
1. Observable与观察者模式的关系 其实这里讲的Observable就是一种观察者模式,只不过RxJS把Observable结合了迭代模式以及附件了很多的operator,让他变得很强大,也 ...
- Django框架之单表操作
一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name ="海东",cou ...
- __name__ = '__main__'有什么用
很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...
- MiniUI级联
OnCellCommitEdit: function (e) { var grid = e.sender; var record = e.record; ...
- hdu4749 kmp应用
呃,从网上看的题解,然而其实有点地方还没搞懂,先放在这,以后再回来理解. 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题目:2013 is ...
- Oracle数据安全(五)审计
一.审计的概念 审计是监视和记录用户对数据库所进行操作,以供DBA进行统计和分析.利用审计可以完成下列任务 保证用户能够对自己在数据库中的活动负责. 禁止用户在数据库中从事于自己职责不相符的活动 调查 ...
- redis 笔记05 Sentinel、集群
Sentinel 1. Sentinel只是一个运行在特殊模式下的Redis服务器,它使用了和普通模式不同的命令表,所以Sentinel模式能够使用的命令和普通的Redis服务器能够使用的命令不同. ...
- 【Head First Servlets and JSP】笔记20:EL以及<jsp:useBean ....>的补充
1.EL的英文是Expression Language,译成中文就是“表达式语言”.这是一种给前端程序员使用的脚本语言,EL与Java表达式相比并没有什么“天壤之别”,在后端程序员看来多少有点“多此一 ...
- grep 使用场景
(1)结合find命令和管道 你的一个音乐文件夹里有多种格式的文件,而你只想找到艺术家jay的mp3文件,并且不含有任何的混合音轨 find . -name "*mp3" | ...