//设置输入框 ---《因为输入框用了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. 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结

    20155317 王新玮 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 异常处理 & Collection与Map 异常继承架构 错误的对象继承ja ...

  2. 20155332 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉

    实验内容 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验知识点 JVM.JRE.JDK的安装位置与区别: 命令行运行javac:java:javac ...

  3. 20145226 《Java程序设计》第3周学习总结

    教材学习内容总结 学习目标 区分基本类型与类类型 理解对象的生成与引用的关系 掌握String类和数组 理解封装的概念 掌握构造方法的定义 理解重载的概念 掌握static的应用 教材第四章内容总结 ...

  4. linux Ubuntu Kali 安装flash

    http://jingyan.baidu.com/article/fa4125accdeeec28ad709252.html

  5. 分类问题中的“维数灾难” - robotMax

    分类问题中的“维数灾难” - robotMax 在看机器学习的论文时,经常会看到有作者提到“curse of dimensionality”,中文译为“维数灾难”,这到底是一个什么样的“灾难”?本文将 ...

  6. DSP28335声音降噪(未完成)

    1. 确定使用的模块是Webrtc-NS,采集声音的芯片TLV32AIC23,实际测试发现Webrtc-NS无法使用,所以改成FIR滤波器. 从时域特性上来看,数字滤波器还可以分为有限冲激响应数字滤波 ...

  7. BZOJ3174. [TJOI2013]拯救小矮人(dp)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=3174 题解 其实此题并不需要那么多YY的部分. 我们考虑若干个小矮人逃出的顺序.若跳出的 ...

  8. HTML基本代码教学,第三天

    HTML 今天由于个人情况,身体不适,但是为了大家的学习进度,咱们以纯文字得形式来简单了解下今天的学习内容 今儿咱们来了解下表单 <form id=" "  name=&qu ...

  9. Maven学习(十八)-----Maven依赖管理

    其中一个Maven的核心特征是依赖管理.管理依赖关系变得困难的任务一旦我们处理多模块项目(包含数百个模块/子项目). Maven提供了一个高程度的控制来管理这样的场景. 传递依赖发现 这是很通常情况下 ...

  10. Git生成SSH密钥

    git config --global user.name "yangjianliang"配置用户名 git config --global user.email "52 ...