iOS 监听键盘高度,输入框上升
//设置输入框 ---《因为输入框用了get方法,所以第一次调用输入框要用self 调用》;
self.textlab.frame=CGRectMake(, , , );
_textlab.layer.borderColor=[UIColor blueColor].CGColor;
_textlab.layer.borderWidth= 0.5f;
_textlab.backgroundColor=[UIColor colorWithRed:0.830 green:0.801 blue:0.881 alpha:1.000]; //添加输入框到视图
[self.view addSubview:self.textlab]; //监听键盘,键盘出现
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(keyboardwill:)
name:UIKeyboardWillShowNotification object:nil]; //监听键盘隐藏
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(keybaordhide:)
name:UIKeyboardWillHideNotification object:nil]; //设置点击手势,当点击空白处,结束编辑,收回键盘
UITapGestureRecognizer *tapp=[[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tapAction:)];
//开启交互
self.view.userInteractionEnabled=YES;
//添加手势到视图
[self.view addGestureRecognizer:tapp];
2、里面方法的实现
//点击手势方法
-(void)tapAction:(UITapGestureRecognizer *)sender
{
[self.view endEditing:YES];
} //当键盘出现时,调用此方法
-(void)keyboardwill:(NSNotification *)sender
{
//获取键盘高度
NSDictionary *dict=[sender userInfo];
NSValue *value=[dict objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardrect = [value CGRectValue];
int height=keyboardrect.size.height; //如果输入框的高度低于键盘出现后的高度,视图就上升;
if ((_textlab.frame.size.height + _textlab.frame.origin.y)>(self.view.frame.size.height - height))
{
self.view.frame = CGRectMake(, -height, self.view.frame.size.width, self.view.frame.size.height);
}
} //当键盘隐藏时候,视图回到原定
-(void)keybaordhide:(NSNotification *)sender
{
self.view.frame = CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height);
} //输入框的get方法
-(UITextField *)textlab
{
if (_textlab==nil)
{
_textlab=[UITextField new];
}
return _textlab;
}
防止键盘遮挡方式二;
调用UITextField 输入框的代理方法 <UITextFieldDelegate>
//开始编辑输入框的时候,软键盘出现,执行此事件
-(void)textFieldDidBeginEditing:(UITextField *)textlab
{
//获取当前输入框的位置信息
CGRect frame = textlab.frame;
//获取键盘底部位置与键盘最高点之间的距离,键盘高度256
int offset = frame.origin.y + frame.size.height - (self.view.frame.size.height - 256.0);
//设置视图上升的时间
NSTimeInterval animaTime = 0.30f;
//字符串随意也行...
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
//添加视图上的上升时间0.3f
[UIView setAnimationDuration:animaTime]; //将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示
if(offset > )
self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
//提交动画
[UIView commitAnimations];
}
//当用户按下return键或者按回车键,keyboard消失
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
//收回键盘第一响应者意思...
[textField resignFirstResponder];
return YES;
} //输入框编辑完成以后,将视图恢复到原始状态
-(void)textFieldDidEndEditing:(UITextField *)textField
{
self.view.frame =CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height);
}
iOS 监听键盘高度,输入框上升的更多相关文章
- IOS 监听键盘的通知(NSNotificationCenter)
通知方法: /** * 当键盘改变了frame(位置和尺寸)的时候调用 */ - (void)keyboardWillChangeFrame:(NSNotification *)note { // 设 ...
- iOS开发之监听键盘高度的变化
最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又 ...
- iOS开发之监听键盘高度的变化 分类: ios技术 2015-04-21 12:04 233人阅读 评论(0) 收藏
最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又 ...
- iOS监听键盘事件
#pragma mark - view life cycle - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter def ...
- ios监听键盘弹出 频幕位置改变
- iOS 监听键盘变化
//将要显示键盘 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowKeyboard: ...
- 修改某个UITextField的键盘的返回键类型以及监听键盘的高度变化,取到键盘动画退出弹出的时间,一起随着键盘顶出来或者压下去,
1.修改某个UITextField的键盘的返回键类型: [_bottomTextView setReturnKeyType:UIReturnKeyDone]; 1.1.textFied点击return ...
- swift 监听键盘弹出的高度
// 监听键盘通知 NotificationCenter.default.addObserver(self, selector: #selector(ComposeViewController.key ...
- 避免scrollview内部控件输入时被键盘遮挡,监听键盘弹起,配合做滚动
1,监听键盘 2,根据当前键盘弹起高度与控件的底部位置计算滑动距离 3,根据滑动距离在键盘弹起和隐藏是分别设置动画完成滑动 实现: 1,监听键盘使用 #pragma mark - 键盘监听 ...
随机推荐
- 20155236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155236 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 因为我用的是windo ...
- 【LG4631】[APIO2018]Circle selection 选圆圈
[LG4631][APIO2018]Circle selection 选圆圈 题面 洛谷 题解 用\(kdt\)乱搞剪枝. 维护每个圆在\(x.y\)轴的坐标范围 相当于维护一个矩形的坐标范围为\([ ...
- 【JUC源码解析】FutureTask
简介 FutureTask, 一个支持取消行为的异步任务执行器. 概述 FutureTask实现了Future,提供了start, cancel, query等功能,并且实现了Runnable接口,可 ...
- 真香!iOS云真机全新上线!
WeTest 导读 众多开发者已经渐渐适应通过调用线上的安卓真机进行远程调试,但是针对iOS设备,则依然存在“iOS设备昂贵”“无法及时采购iOS最新设备”“无法复现iOS历史系统版本”等问题. 为了 ...
- C# List<string> 的Contains方法 是区分大小写的
List<string> 的Contains 是区分大小写的 代码: List<string> test = new List<string>(); test.A ...
- 3星|《科技投资新时代》:TMT行业资讯汇编
科技投资新时代:TMT投资方法.趋势与热点聚焦 全书共6章,前4章是一些投资与分析的基本方法与技巧,第5章集中讲通信行业的现状与趋势,第6章讲大数据.物联网.全面屏等TMT行业热点. 总体来说数据.信 ...
- phpcms单页顶级栏目默认打开第一个子栏目方法
首先phpcms单页如过下面有子栏目,那么当前栏目是不能被编辑内容的,且访问后是没有内容的,首先不知道这是不是产品设计的一个缺陷,但是在使用过程中确实在后台也没有找到其他的对应解决办法,刚好在某QQ群 ...
- nginx启动、停止重启
启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...
- 阿里IPO法律咨询费达1580万美元 为Facebook六倍
据路透社报道,阿里巴巴集团周五在 IPO (首次公开招股)更新文件中披露,将向美国盛信律师事务所(Simpson Thacher)以及其他为 IPO 提供咨询服务的律师事务所支付 1580 万美元的法 ...
- charles 在mac下 抓取 https包
1. 打开charles --> help --> SSL proxying --> install charles root certificate 2. 在弹出的添加证书窗口中 ...