2014-02-19 92 views
0

我有一个保存内容视图1500 pt高的滚动视图。它正在滚动的屏幕是标准的iPad人像屏幕(1024)。滚动UIScrollView以适应iOS中的键盘

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

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

为了计算滚动视图的距离,我需要知道文本框在屏幕上的位置,现在我可以确定它是否会被键盘覆盖,只是足以看到它。

任何想法如何找出textField在屏幕上的位置?

谢谢!

+0

请在你的问题中添加截屏更清晰 –

+0

http://www.apeth.com/iOSBook /ch23.html#_keyboard_covers_text_field – matt

+0

使用'convertRect:fromView','convertRect:ToView','convertPoint:ToView'或'convertPoint:fromView'来转换坐标。 – n00bProgrammer

回答

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补充一点:文本字段

希望这会有所帮助。