UITextField —— 键盘弹出视图上移
来源:互联网 发布:潜韵耳机的官方淘宝店 编辑:程序博客网 时间:2024/04/29 03:44
实现原理: 坐标系转换后计算尺寸进行调整其偏移量
1 .定义全局变量
@property (nonatomic, strong) UITextField *currentTextfield;
2 . 在viewllWillAppear
中设置监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
3 .viewWillDisappear
中设置移除监听
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
4 . 实现监听方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { self.currentTextfield = textField; return YES;}- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES;}- (void)keyboardWillShow:(NSNotification *)notif { CGRect rect = [[notif.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat keyBoardHeight = rect.size.height; UIWindow *currentWindow = [[UIApplication sharedApplication].delegate window]; CGRect actuRect = [self.currentTextfield convertRect:self.currentTextfield.bounds toView:currentWindow]; CGFloat maxY = currentWindow.frame.size.height - keyBoardHeight; CGFloat actuY = CGRectGetMaxY(actuRect); CGFloat currentOffset = self.view.transform.ty; CGFloat needsOffset = maxY - actuY; // 实际需要移动的偏移量 [UIView animateWithDuration:.35 animations:^{ if (needsOffset < fabs(currentOffset)) { // 偏移量负的可直接上移,如果为正就需要考虑是否超过当前最多偏移量,如果超过则需要将其还原 self.view.transform = CGAffineTransformTranslate(self.view.transform, 0, needsOffset); } else { self.view.transform = CGAffineTransformIdentity; } }];}- (void)keyboardWillHide:(NSNotification *)notif { [UIView animateWithDuration:.35 animations:^{ self.view.transform = CGAffineTransformIdentity; }]; self.currentTextfield = nil;}
拓展: 如果想将所有的textField都实现这个功能便可以将其写在基类控制器中,这样让其他控制器继承自这个基类便可以了。如果想实现UITextView也可以用这种方式。原理不变。
0 0
- UITextField —— 键盘弹出视图上移
- UITextView及UITextField处理键盘弹出 视图上移
- iOS 键盘弹出视图上移
- 弹出键盘时视图上移
- 键盘弹出,视图向上移,键盘高度遮住UITextField的解决方法
- IOS 实现键盘弹出视图上移功能
- IOS 实现键盘弹出视图上移功能
- iOS之键盘弹出视图上移
- iOS之键盘弹出视图上移
- 输入框键盘弹出视图相应上移
- swift3 实现键盘弹出视图上移
- IOS UITableView中UITextField 弹出键盘时,界面上移
- iOS UITextField输入框随键盘弹出界面上移
- iOS键盘高度,键盘弹出视图上移动
- iOS开发之UI——键盘弹出屏幕上移
- iOS学习笔记——视图上移与键盘弹回
- iOS学习笔记——视图上移与键盘弹回
- iOS学习笔记——视图上移与键盘弹回
- Android studio -SVN 使用笔记
- 《深入理解mybatis原理(六)》 MyBatis缓存机制的设计与实现如何细粒度地控制你的MyBatis二级缓存
- hibernate 实现多表连接查询
- 【LeetCode】268. Missing Number
- 排序
- UITextField —— 键盘弹出视图上移
- JAVA类加载机制全解析
- Dubbo的helloworld maven版
- 傻瓜式Gson解析
- 个人笔记-递归构造树
- EventBus的使用和源码解析
- Atomikos 分布式数据源,spring,mybatis
- PAFA3设计开发指南
- PxCook像素大厨,UI设计师标注切图的利器