(iOS)关于键盘遮挡textfield问题
记录一下自己经常遇到问题。使用textfield(textview)。当输入框位置比较靠下时,弹出的键盘会遮挡输入框,这是就需要动态移动输入框编辑状态时self.view的位置,
自己经常用的方法有两个
1、项目中很多地方用到输入框,并出现这些问题,用第三方库---IQKeyboardManager,非常的方便,什么都不用写就能实现很多功能。就不详叙述了
2、一两处地方用到,可以自己简单的写一下
两个通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
self.tempTF------定义的中间textfield。当有多个输入框是,在代理中
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
self.tempTF = textField;
return YES;
}
--------------------------------------------------------------------------------------------------------------------------------------------------
/**
* 键盘出现
*/
- (void)keyboardWillShow:(NSNotification *)notification
{
//获取键盘高度,在不同设备上,以及中英文下是不同的
CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
// 取得键盘的动画时间,这样可以在视图上移的时候更连贯
double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
CGFloat offset = HEIGHT - (self.tempTF.frame.origin.y+self.tempTF.frame.size.height+kbHeight);
if(offset<=0)
{
[UIView animateWithDuration:duration animations:^{
CGRect frame = self.view.frame;
frame.origin.y = offset;
self.view.frame = frame;
}];
}
}
/**
* 键盘消失
*/
- (void)keyboardWillHide:(NSNotification *)notification
{
// 键盘动画时间
double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
//视图下沉恢复原状
[UIView animateWithDuration:duration animations:^{
self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}];
}
--------------------------------------------------------------------------------------------------------------------------------------------------
over---新手,有很多不足,敬请见谅。
最新文章
- IT软件的编程方向 - 进阶者系列 - 学习者系列文章
- jquery怎么跳出当前的each循环
- 关于 hangfire 的权限问题
- 《Focus On 3D Terrain Programming》中一段代码的注释一
- STL中vector的用法
- 学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结
- ext 金额大写
- INI解析模块的C++实现
- inner join on, left join on, right join on
- sql习题及答案
- 【BZOJ4872】【SHOI2017】分手是祝愿 期望DP
- JSON语法、对象、遍历数组的区别和基本操作
- SQLServer 创建自己的数据库
- quick pow
- 如何在iview组件中使用jsx
- 入门cout输出的格式(补位和小数精度)
- Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL
- 加载CDN加速服务地址
- clientX,offsetX,layerX,pageX,screenX,X鼠标位置全解
- C++名人的网站 转
热门文章
- ELK篇---------elasticsearch集群安装配置
- Vim多行编辑
- Oracle数据迁移之rman活动数据库复制
- Oracle体系结构之Oracle基本数据字典:v$database、v$instance、v$version、dba_objects
- JAVA 的wait(), notify()与synchronized同步机制
- 在centos7下安装svn
- elasticsearch 通过外网访问
- ConcurrentModificationException
- 畅通工程&;&;How Many Tables
- FPKM\RPKM\TPM学习[转载]