记录一下自己经常遇到问题。使用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---新手,有很多不足,敬请见谅。

最新文章

  1. IT软件的编程方向 - 进阶者系列 - 学习者系列文章
  2. jquery怎么跳出当前的each循环
  3. 关于 hangfire 的权限问题
  4. 《Focus On 3D Terrain Programming》中一段代码的注释一
  5. STL中vector的用法
  6. 学习笔记_第一个strut程序_之中文乱码,过滤器解决方案及过程总结
  7. ext 金额大写
  8. INI解析模块的C++实现
  9. inner join on, left join on, right join on
  10. sql习题及答案
  11. 【BZOJ4872】【SHOI2017】分手是祝愿 期望DP
  12. JSON语法、对象、遍历数组的区别和基本操作
  13. SQLServer 创建自己的数据库
  14. quick pow
  15. 如何在iview组件中使用jsx
  16. 入门cout输出的格式(补位和小数精度)
  17. Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL
  18. 加载CDN加速服务地址
  19. clientX,offsetX,layerX,pageX,screenX,X鼠标位置全解
  20. C++名人的网站 转

热门文章

  1. ELK篇---------elasticsearch集群安装配置
  2. Vim多行编辑
  3. Oracle数据迁移之rman活动数据库复制
  4. Oracle体系结构之Oracle基本数据字典:v$database、v$instance、v$version、dba_objects
  5. JAVA 的wait(), notify()与synchronized同步机制
  6. 在centos7下安装svn
  7. elasticsearch 通过外网访问
  8. ConcurrentModificationException
  9. 畅通工程&amp;&amp;How Many Tables
  10. FPKM\RPKM\TPM学习[转载]