动态监听UITextField键盘的弹出与退出
2016-09-03 14:39
309 查看
UITextField中键盘的弹出与隐藏状态通过系统的通知名称UIKeyboardWillShowNotification、UIKeyboardWillHideNotification来获取
UITextField中键盘的退出方法常用的有两种:1.点击空白处回撤键盘,2.点击Return建回撤键盘。
下面附上键盘的监听方法和键盘退出方法。
1.首先设置宏定义取屏幕宽高
#define WIDTH [[UIScreen mainScreen] bounds].size.width
#define HEIGHT [[UIScreen mainScreen] bounds].size.height
2.让控制器遵循协议
@interfaceViewController ()<UITextFieldDelegate>
3.设置属性值
@property (nonatomic,strong)UITextField
* textField;
//记录下textField的原始中心点
@property (nonatomic)CGPoint center;
4.附上UITextField的创建与监听键盘的方法
//创建对象
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(50,HEIGHT
- 100,WIDTH -100 ,50)];
//设置代理
self.textField.delegate =self;
//占位提醒字符
self.textField.placeholder
=@"请输入内容";
//边缘风格
self.textField.borderStyle
= UITextBorderStyleRoundedRect;
//键盘类型
self.textField.keyboardType
= UIKeyboardTypeDefault;
//设置字体
self.textField.font
= [UIFont
systemFontOfSize:25];
//获取键盘中心点
self.center =self.textField.center;
[self.view addSubview:self.textField];
//创建观察者,监听键盘的弹出
[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name: UIKeyboardWillShowNotification object:nil];
//创建观察者,监听键盘的隐藏 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name:UIKeyboardWillHideNotification object:nil];
5.keyboardHandle:的方法
//如果这个函数带参数,只能带过来通知
- (void)keyboardHandle:(NSNotification *)notify{
//获取文本输入框中心点坐标
CGPoint center =self.textField.center;
//取出键盘的尺寸值
NSValue *rectValue = notify.userInfo[UIKeyboardFrameBeginUserInfoKey];
//官方提供了直接从NSValue转化为CGRect的函数
CGRect rect = rectValue.CGRectValue;
//获取键盘的高度
CGFloat height = rect.size.height;
//获取通知的名字
NSString *nameStr = notify.name;
//判断是哪个通知,做出相应的处理
//键盘弹出
if ([nameStr isEqualToString:UIKeyboardWillShowNotification])
{
center.y =self.center.y
- height;
}else{//键盘退出
center = self.center;
}
self.textField.center = center;
}
6.键盘退出的方法
//F1:点击屏幕空白处键盘退出
- (void)touchesBegan:(NSSet<UITouch *> *)touches
withEvent:(UIEvent *)event{
[self.textField resignFirstResponder];
}
#pragma mark - UITextFieldDelegate
//F2:点击Return键键盘退出
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
returnYES;
}
UITextField中键盘的退出方法常用的有两种:1.点击空白处回撤键盘,2.点击Return建回撤键盘。
下面附上键盘的监听方法和键盘退出方法。
1.首先设置宏定义取屏幕宽高
#define WIDTH [[UIScreen mainScreen] bounds].size.width
#define HEIGHT [[UIScreen mainScreen] bounds].size.height
2.让控制器遵循协议
@interfaceViewController ()<UITextFieldDelegate>
3.设置属性值
@property (nonatomic,strong)UITextField
* textField;
//记录下textField的原始中心点
@property (nonatomic)CGPoint center;
4.附上UITextField的创建与监听键盘的方法
//创建对象
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(50,HEIGHT
- 100,WIDTH -100 ,50)];
//设置代理
self.textField.delegate =self;
//占位提醒字符
self.textField.placeholder
=@"请输入内容";
//边缘风格
self.textField.borderStyle
= UITextBorderStyleRoundedRect;
//键盘类型
self.textField.keyboardType
= UIKeyboardTypeDefault;
//设置字体
self.textField.font
= [UIFont
systemFontOfSize:25];
//获取键盘中心点
self.center =self.textField.center;
[self.view addSubview:self.textField];
//创建观察者,监听键盘的弹出
[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name: UIKeyboardWillShowNotification object:nil];
//创建观察者,监听键盘的隐藏 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardHandle:)name:UIKeyboardWillHideNotification object:nil];
5.keyboardHandle:的方法
//如果这个函数带参数,只能带过来通知
- (void)keyboardHandle:(NSNotification *)notify{
//获取文本输入框中心点坐标
CGPoint center =self.textField.center;
//取出键盘的尺寸值
NSValue *rectValue = notify.userInfo[UIKeyboardFrameBeginUserInfoKey];
//官方提供了直接从NSValue转化为CGRect的函数
CGRect rect = rectValue.CGRectValue;
//获取键盘的高度
CGFloat height = rect.size.height;
//获取通知的名字
NSString *nameStr = notify.name;
//判断是哪个通知,做出相应的处理
//键盘弹出
if ([nameStr isEqualToString:UIKeyboardWillShowNotification])
{
center.y =self.center.y
- height;
}else{//键盘退出
center = self.center;
}
self.textField.center = center;
}
6.键盘退出的方法
//F1:点击屏幕空白处键盘退出
- (void)touchesBegan:(NSSet<UITouch *> *)touches
withEvent:(UIEvent *)event{
[self.textField resignFirstResponder];
}
#pragma mark - UITextFieldDelegate
//F2:点击Return键键盘退出
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
returnYES;
}
相关文章推荐
- ios键盘监听键盘弹出,不会档住UITextField
- 在多个UITextField中监听键盘的弹出和消失
- iOS获取键盘弹出高度,监听键盘弹出退出
- iOS 【UIKit-UITextField 退出键盘的几种方式/监听方式】
- Android 如何监听返回键,弹出一个退出对话框
- Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
- IOS——UITextField自动适应键盘弹出
- 监听键盘的弹出与消失
- UITextView及UITextField处理键盘弹出 视图上移
- iOS 监听键盘弹出的高度,避免挡住界面
- 1.IBAction 、IBOutlet 、Bundle identifier、退出键盘、UITextfield
- 【转】iOS 上常用的两个功能:点击屏幕和return退出隐藏键盘和解决虚拟键盘挡住UITextField的方法
- Android 如何监听返回键,弹出一个退出对话框
- Android监听键盘是否弹出,以及获取软键盘的高度
- ios 动态监听键盘输入法和高度
- 如何让UITextField不弹出键盘
- Android 如何监听返回键,弹出一个退出对话框
- 监听android键盘弹出隐藏
- iOS 监听键盘的弹出,收起,并且拿到键盘的高度
- 安卓实现登陆页logo随键盘收放动态伸缩(完美解决键盘弹出遮挡控件的问题)