//设置输入框 ---《因为输入框用了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 监听键盘高度,输入框上升的更多相关文章

  1. IOS 监听键盘的通知(NSNotificationCenter)

    通知方法: /** * 当键盘改变了frame(位置和尺寸)的时候调用 */ - (void)keyboardWillChangeFrame:(NSNotification *)note { // 设 ...

  2. iOS开发之监听键盘高度的变化

    最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又 ...

  3. iOS开发之监听键盘高度的变化 分类: ios技术 2015-04-21 12:04 233人阅读 评论(0) 收藏

    最近做的项目中,有一个类似微博中的评论转发功能,屏幕底端有一个输入框用textView来做,当textView成为第一响应者的时候它的Y值随着键盘高度的改变而改变,保证textView紧贴着键盘,但又 ...

  4. iOS监听键盘事件

    #pragma mark - view life cycle - (void)viewDidLoad { [super viewDidLoad]; [[NSNotificationCenter def ...

  5. ios监听键盘弹出 频幕位置改变

  6. iOS 监听键盘变化

    //将要显示键盘 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowKeyboard: ...

  7. 修改某个UITextField的键盘的返回键类型以及监听键盘的高度变化,取到键盘动画退出弹出的时间,一起随着键盘顶出来或者压下去,

    1.修改某个UITextField的键盘的返回键类型: [_bottomTextView setReturnKeyType:UIReturnKeyDone]; 1.1.textFied点击return ...

  8. swift 监听键盘弹出的高度

    // 监听键盘通知 NotificationCenter.default.addObserver(self, selector: #selector(ComposeViewController.key ...

  9. 避免scrollview内部控件输入时被键盘遮挡,监听键盘弹起,配合做滚动

    1,监听键盘 2,根据当前键盘弹起高度与控件的底部位置计算滑动距离 3,根据滑动距离在键盘弹起和隐藏是分别设置动画完成滑动     实现: 1,监听键盘使用   #pragma mark - 键盘监听 ...

随机推荐

  1. day1 函数 (独立功能代码块)

    1.引入函数 2.函数执行过程 4.带参数的函数 5.带返回值的函数 6. 多个返回值 (return a,b,c)元组 7.4种函数 1.引入函数 独立功能代码块 ---> 封装 ----&g ...

  2. RHCSA-day1

    1. 破解密码 开机 e 进入编辑模式 linux16 /boot/.............................en_US.UTF_8 这行末尾插入 rd.break (空格) ctrl ...

  3. .NET core 项目部署在windows 服务器方法以及iis 访问报 500.19错误的解决办法

    将本地发布的服务本地运行没问题,发布上云windows 服务器就报 500.19 0x8007000d 是因为云服务器没有安装.net core相关的插件,比如.NET CORE sdk等,请按照该文 ...

  4. 高能福利 |"荐"者有份,有"福"同享

    WeTest 导读 越来越多的开发者加入WeTest大家庭了,感谢大家一直以来的支持,WeTest又有新一步“大福利”赠送了! 即日起,参加WeTest用户推荐有礼活动,推荐者和被推荐者皆可获得福利. ...

  5. stl源码分析之list

    本文主要分析gcc4.8版本的stl list的源码实现,与vector的线性空间结构不同,list的节点是任意分散的,节点之间通过指针连接,好处是在任何位置插入删除元素都只需要常数时间,缺点是不能随 ...

  6. C、C++字符操作归总

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  7. 用python SMTP进行邮件发送

    import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart & ...

  8. [network]RIP协议

    水平分割:一种避免路由环路的出现和加快路由汇聚的技术. 原理:路由器从某个接口接收到的更新信息不允许再从这个接口发送回去. 优点:1. 阻止路由环路产生:2. 减少路由器更新信息占用的链路带宽资源. ...

  9. PytorchZerotoAll学习笔记(四)--线性回归

    线性回归 # 导入 torch.torch.autograd的Variable模块import torch from torch.autograd import Variable # 生成需要回归需要 ...

  10. 个人第十一周PSP

    11.24 --11.30本周例行报告 1.PSP(personal software process )个人软件过程. 类型 任务 开始时间                结束时间 中断时间 实际用 ...