ios -- 虚拟键盘弹出挡住textfield的分析以及解决办法
2015-05-21 17:18
567 查看
虚拟键盘弹出挡住textfield的问题,在网上搜出一大堆。但是很多方案也只是在某种情况下能满足我们的需求。
之前的做法是根据int offset = textfield.frame.origin.y + height - self.view.frame.size.height + 216(键盘高度)来计算y轴移动的偏移量。如果offset大于0,就向上偏移。
这里有个问题:如果textfield所在view外面嵌套了好多层布局,而且使用autoLayout,那么,textfield.frame.origin.y=0,导致offset小于0而没有向上偏移。
以下是经本人测试且有效的办法:
个人笔记,如果有不足的地方,欢迎大家一起讨论,一起进步。
转载请注明地址:/article/9816371.html
之前的做法是根据int offset = textfield.frame.origin.y + height - self.view.frame.size.height + 216(键盘高度)来计算y轴移动的偏移量。如果offset大于0,就向上偏移。
这里有个问题:如果textfield所在view外面嵌套了好多层布局,而且使用autoLayout,那么,textfield.frame.origin.y=0,导致offset小于0而没有向上偏移。
以下是经本人测试且有效的办法:
// 开始编辑输入框时,键盘出现,视图的Y坐标向上移动offset个单位,腾出空间显示键盘 - (void)textFieldDidBeginEditing:(UITextField *)textField { CGRect textFrame = textField.frame; CGPoint textPoint = [textField convertPoint:CGPointMake(0, textField.frame.size.height) toView:self.view];// 关键的一句,一定要转换 int offset = textPoint.y + textFrame.size.height + 216 - self.view.frame.size.height + 24;// 24是textfield和键盘上方的间距,可以自由设定 NSTimeInterval animationDuration = 0.30f; [UIView beginAnimations:@"ResizeForKeyboard" context:nil]; [UIView setAnimationDuration:animationDuration]; // 将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示 if (offset > 0) { self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height); } [UIView commitAnimations]; } // 用户输入时 - (BOOL)textFieldShouldEndEditing:(UITextField *)textField{ // 输入结束后,将视图恢复到原始状态 self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); return YES; }
个人笔记,如果有不足的地方,欢迎大家一起讨论,一起进步。
转载请注明地址:/article/9816371.html
相关文章推荐
- 虚拟键盘弹出挡住textfield的分析以及解决办法
- [IOS]textField被虚拟键盘挡住解决方法
- [IOS]textField被虚拟键盘挡住解决方法
- iOS导航栏变高、状态栏字体变大问题的分析以及解决办法
- IOS 常遇到的报错警告 以及 解决办法
- No.1 iOS---UI学习第一天(笔记)(以及为什么模拟器上不显示我们添加的控件的解决办法)
- IOS wx.chooseImage以及wx.uploadImage 失败的一些操蛋事以及解决办法。
- iOS审核被拒原因以及解决办法
- iOS 虚拟键盘挡住UITextField的解决方法
- ios输入框被键盘挡住的解决办法
- HTML5 虚拟键盘出现挡住输入框的解决办法
- Android 虚拟键盘弹出把底部栏顶上去的解决办法
- 老鼠自卑的心结分析以及解决办法
- Win8每次开机都要两次怎么办?故障分析以及解决办法
- 【Android】常见异常 —— android.view.WindowLeaked 分析以及解决办法
- Alterdialog中不弹出软键盘原因分析及解决办法
- Xcode6.3模拟器ios8.3模拟器不能弹出虚拟键盘及虚拟键盘无法切换中文输入的解决办法
- iOS开发之Xcode的静态分析(Static Code Analysis)与常见内存隐患解决办法
- 解决办法:ios模拟器键盘不弹出
- 旋转实现iOS(iPhone/iPad) 屏幕旋转响应函数的缺点与窗口大小位置调整,以及解决办法