很多像我一样的小白,经常会遇到textfield编辑被遮盖的问题。搜了很多方法都不是很理想
那么我现在就把认为简单的方法和大家分享一下。
1.先把所有的子视图控件加入到scrollview上,当然textfield的父视图也是他。
2.用到界面自动布局的情况下,设置textfield到父视图的底部不是很容易啊(汗。。。我是没有成功)
那么怎么算这个要上升的高度呢?
我是这样做的:1.我们要知道键盘的高度一般是210
2.布局从上向下布局,这样textfield的离底部的高度是不确定的
但是上面的高度是确定的。那么我们看textfield的坐标再加上他的高度就是它离下面的高度了吧
3.知道了scrollview的总高(H1),textfield距离上面的高度(H2),它距离下面的高度不是很明显(H1-H2)
4.最关键的一步了(看仔细了...)MoveHeight(scrollview 要偏移的距离) = 210 - (H1-H2)+10
我们知道H1 - H2是textfield到底部的距离 和 210 比小的话 (那么!!!它就被遮盖住。)10 是自己设置的
偏移距离不多加点,感觉textfield与键盘挨着是不是死丑!!!
我们知道为什么被遮住了,那么怎么做呢?显然该UIScrollview登场了 下面两个方法就是实现了
-(void)textFieldDidBeginEditing:(UITextField *)textField{// 文本编辑开始时
[UIView animateWithDuration:0.4 animations:^{
self.scrollview.contentOffset = CGPointMake(0, MoveHeight); <-----(@看这里@)MoveHeight是不是很眼熟
这就是scroll偏移量,UIscrollview上移了 他的子视图textfield敢不移动么
}];
}
- (void)textFieldDidEndEditing:(UITextField *)textField{ // 文本结束编辑时 要让偏移量恢复原样,不然它一直在上面,你该难受了
[UIView animateWithDuration:0.3 animations:^{
self.scrollview.contentOffset = CGPointMake(0, 0);
}];
}