2014-02-19 96 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補充一點:文本字段

希望這會有所幫助。