iOS解决呼出键盘遮挡页面问题(装逼模式一)
2016-06-28 14:44
639 查看
http://www.jianshu.com/p/cff91f871f04
两个TextField在VC的下部如何让键盘呼出的时候刚好在你点击TextFiled的下面呢?
装逼模式代码开始!!!
首先要写上UITextFieldDelegate代理协议,,,切记!!!
1:添加文本输入框
申明两个属性
2:实现代理方法
此处主要解决
// 当前点击textfield的坐标的Y值 + 当前点击textFiled的高度 - (屏幕高度- 键盘高度 - 键盘上tabbar高度)
// 在这一部 就是了一个 当前textfile的的最大Y值 和 键盘的最全高度的差值,用来计算整个view的偏移量
3:点击空白处的时候让其回到原来位置
还有点击键盘的return键的时候恢复原状就要在
切记一定要判断当前的textile是否是你点击的self.userNameText了。在让他恢复原状
文/洲洲哥(简书作者)
原文链接:http://www.jianshu.com/p/cff91f871f04
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
两个TextField在VC的下部如何让键盘呼出的时候刚好在你点击TextFiled的下面呢?
装逼模式代码开始!!!
首先要写上UITextFieldDelegate代理协议,,,切记!!!
1:添加文本输入框
申明两个属性
@property (nonatomic, weak) UITextField * userNameText; @property (nonatomic, weak) UITextField * userPwdText;
UITextField * userNameText = [AutolayoutView autolayoutTextFieldWithPlaceholder:@"账号"]; userNameText.delegate = self; [self.view addSubview:userNameText]; self.userNameText = userNameText; UITextField * userPwdText = [AutolayoutView autolayoutTextFieldWithPlaceholder:@"密码"]; userPwdText.delegate = self; [self.view addSubview:userPwdText]; self.userPwdText = userPwdText;
2:实现代理方法
此处主要解决
// 当前点击textfield的坐标的Y值 + 当前点击textFiled的高度 - (屏幕高度- 键盘高度 - 键盘上tabbar高度)
// 在这一部 就是了一个 当前textfile的的最大Y值 和 键盘的最全高度的差值,用来计算整个view的偏移量
- (void)textFieldDidBeginEditing:(UITextField *)textField { NSLog(@"textFieldDidBeginEditing"); CGRect frame = textField.frame; CGFloat heights = self.view.frame.size.height; // 当前点击textfield的坐标的Y值 + 当前点击textFiled的高度 - (屏幕高度- 键盘高度 - 键盘上tabbar高度) // 在这一部 就是了一个 当前textfile的的最大Y值 和 键盘的最全高度的差值,用来计算整个view的偏移量 int offset = frame.origin.y + 42- ( heights - 216.0-35.0);//键盘高度216 NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyBoard" context:nil]; [UIView setAnimationDuration:animationDuration]; float width = self.view.frame.size.width; float height = self.view.frame.size.height; if(offset > 0) { CGRect rect = CGRectMake(0.0f, -offset,width,height); self.view.frame = rect; } [UIView commitAnimations]; }
3:点击空白处的时候让其回到原来位置
/** * textField 取消选中状态 * */ -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"touchesBegan"); [self.view endEditing:YES]; NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; [UIView setAnimationDuration:animationDuration]; CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height); self.view.frame = rect; [UIView commitAnimations]; }
还有点击键盘的return键的时候恢复原状就要在
- (BOOL)textFieldShouldReturn:(UITextField *)textField;里头处理。
切记一定要判断当前的textile是否是你点击的self.userNameText了。在让他恢复原状
文/洲洲哥(简书作者)
原文链接:http://www.jianshu.com/p/cff91f871f04
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- iOS9.0 LaunchScreen.StroyBoard自定义启动图片
- iOS LaunchScreen设置启动图片 启动页停留时间
- iOS 获取磁盘,获取文件大小
- 上传图片流
- iOS 去掉cell高亮的状态
- 开发者证书,加真机调试 讲解 非常适合新手
- 开放平台:百度地图 for iOS 使用相关
- 关于iOS通知的简单认识
- iOS导入头文件的两种不同方法
- iOS开发常用库
- iOS 文件下载
- ios各种第三方控件
- ios本地推送
- termios 详解
- iOS后台任务继续Long-Running Task
- ARC基本原理
- iOS直播技术分析与实现
- iOS分类和扩展(Categories和Extensions)
- PushNotification消息推送逻辑
- iOS cookie