滚动UIScrollView以适应iOS中的键盘

时间:2014-02-19 05:43:46

标签: ios uiscrollview uitextfield

我有一个滚动视图,内容视图高1500磅。它滚动的屏幕是标准的iPad纵向屏幕(1024)。

我在scrollview的内容视图中散布了许多textField。当我弹出键盘打开(通过点击textField)时,我已经将我的scrollview的底部约束提高了216点,为键盘腾出空间。但是,如果我的文本视图位于屏幕的底部,它仍然被键盘隐藏。

我想以编程方式滚动滚动视图(我知道如何使用[self.scrollview setContentOffset:CGMake...)但我不知道如何滚动它。我尝试使用textField的框架的y坐标来计算它,但我想我只能检索相对于内容视图高度的那个值...不是它在屏幕上的实际位置(就好像我在iPad外部测量它一样)使用带点的卷尺作为单位。)

为了计算滚动视图的距离,我需要知道该文本框在屏幕上的位置,现在 - 所以我可以弄清楚它是否会被键盘覆盖并仅仅移动滚动条足以看到它。

我有什么想法可以找出textField在屏幕上的位置?

谢谢!

2 个答案:

答案 0 :(得分:2)

我使用此代码段在我的iPhone应用中获得相同的结果。为 heightDiff

找到合适的值
float heightDiff = 150;

CGPoint yScrollPoint = [self.scrollView convertPoint:CGPointZero fromView:self.textfield];
CGPoint scrollPoint = CGPointMake(0.0, yScrollPoint.y - heightDiff);
[self.scrollView setContentOffset:scrollPoint animated:YES];

textFieldDidBeginEditing:textField

中添加此内容

希望这会有所帮助。

答案 1 :(得分:0)

Matt在上面的评论中发布了一个链接,其中详细说明了如何执行此操作以及更多内容:http://www.apeth.com/iOSBook/ch23.html#_keyboard_covers_text_field