UI键盘通知
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,strong) UITextField *tf;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_tf = [[UITextField alloc]initWithFrame:CGRectMake(10, self.view.bounds.size.height - 40, 300, 30)];
_tf.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:_tf];
/*
通知中心(单例)
通知中心是一对多的,即同一个广播可以被多个收音机接收
代理是一对一
作用:1.用来接收广播和发起广播
2.用通知的名字作为频道
*/
/*
参数一:响应的类
参数二:类中响应的方法
参数三:通知的名字(即频道)
参数四:接收类型 [注意]nil代表任何类型
*/
//:UIKeyboardWillShowNotification接收键盘将要显示的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];
//UIKeyboardWillHideNotification接收键盘将要隐藏的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
#pragma mark - UIKeyboardWillHideNotification
//键盘将要隐藏
-(void)keyBoardWillHide:(NSNotification *)noti
{
//noti.userInfo是一个字典,大家可以输出来看看字典里面包含了什么
//NSLog(@"%@",noti.userInfo);

//获得弹下去后的坐标[注意是弹下后的]
CGRect keyBoardEndFrame = [[noti.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
//NSLog(@"--%@",NSStringFromCGRect(keyBoardEndFrame));
[UIView animateWithDuration:2 animations:^{
//改变文本框的位置,让它跟着键盘一起弹起来
CGRect tfRext = _tf.frame;
tfRext.origin.y = keyBoardEndFrame.origin.y-_tf.bounds.size.height-10;
_tf.frame = tfRext;
}];
}
#pragma mark - UIKeyBoard notification
//接收到的是通知,所以参数用NSNotification
//键盘将要显示
-(void)keyBoardWillShow:(NSNotification *)noti
{
CGRect keyBoardFrame = [[noti.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
//可以通过以下方法输出CGRect
//NSStringFromCGRect将CGRect转化为字符串的方式获取Frame
//NSLog(@"%@",NSStringFromCGRect(keyBoardFrame));
//获取键盘的动画持续时间
//CGFloat keyBoardDuration = [noti.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
[UIView animateWithDuration:2 animations:^{
CGRect tfRect = _tf.frame;
tfRect.origin.y = keyBoardFrame.origin.y - _tf.bounds.size.height -10;
_tf.frame = tfRect;
}];
}
#pragma mark - 当手指触碰屏幕任何一地方时被调用
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//利用结束编辑来隐藏键盘
[self.view endEditing:YES];
}
@end
UI键盘通知的更多相关文章
- AJ学IOS(18)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复
AJ分享,必须精品 先看图片 第一步完成tableView和Cell的架子的图 完善图片 键盘弹出设置后图片: 自动回复图: 粗狂的架子 tableView和Cell的创建 首相tableView为了 ...
- IOS开发-键盘通知自定义键盘
利用键盘通知可实现效果如下: 1.UIKeyboardWillShowNotification: 当点击到可输入的控件上(一般是UITextField)时,键盘会自动显示,并且触发UIKeyboard ...
- WPF 模拟UI 键盘录入
原文:WPF 模拟UI 键盘录入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1835 ...
- ios-利用键盘通知处理键盘出现时遮挡控件问题
-(void)viewDidLoad { NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //注册键盘显示通知 ...
- 【代码笔记】iOS-只让textField使用键盘通知
代码: #import "ViewController.h" @interface ViewController () @end @implementation ViewContr ...
- iOS开发——UI进阶篇(六)键盘处理
一.键盘通知我们经常需要在键盘弹出或者隐藏的时候做一些特定的操作,因此需要监听键盘的状态 键盘状态改变的时候,系统会发出一些特定的通知UIKeyboardWillShowNotification // ...
- iOS开发——UI进阶篇(五)通知、代理、kvo的应用和对比,购物车
一.通知 1.通知中心(NSNotificationCenter)每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信任何一个对象都可以向 ...
- iOS键盘监听的通知
#pragma mark - 键盘通知回调方法 // 监听键盘的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector: ...
- iOS边练边学--通知机制和键盘处理
一.通知中心(NSNotificationCenter) 每一个程序都有一个通知中心实例,专门负责协助不同对象之间的消息通信 任何一个对象都可以想通知中心发布通知(NSNotification),描述 ...
随机推荐
- 从零开始学习jQuery (一) 入门篇
本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些 ...
- js和jquery常用方法
1.0 编码 Encode,Decode function htmlEncode(value) { return $('<div>').text(value).html(); } func ...
- Nancy 学习-自宿主 继续跨平台
Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...
- C#操作 word代码
#region 读取word /// <summary> /// 读取word所有文字内容(不包含表格) /// </summary> /// <returns>w ...
- 在Excel中使用频率最高的函数的功能和使用方法
在Excel中使用频率最高的函数的功能和使用方法,按字母排序: 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(一)ConnectionState
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- Tarjan算法---强联通分量
1.基础知识 在有向图G,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强连通子 ...
- Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The ...
- 世界那么Big,组件那么Small
推荐一个跨平台模块化App框架 -Small. Small,做最轻巧的跨平台插件化框架. 功能 完美内置 所有插件支持内置于宿主包中 高度透明 插件编码.布局编写方式与独立应用开发无异 插件代码调试与 ...
- IOS 集成第三方登录
我使用的是友盟上集成的第三方登录功能,一共使用了三个应用的登录授权,QQ.微信.新浪微博.由于第三方登录授权成功后,需要跳转到一个新的界面,所以这里需要在项目里设置第三方登录的SSO授权.就是必须安装 ...