UIScrollView的妙用---textfield编辑不被键盘遮盖(方便简单好实现@.@)

很多像我一样的小白,经常会遇到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);

    }];

}

 

posted @ 2015-10-27 17:09  frankay  阅读(1344)  评论(0编辑  收藏  举报