2012-01-20 45 views
0

我遇到了涉及表視圖和鍵盤的問題。我開發了程序,以便選擇表格視圖時,它將表格視圖滾動到鍵盤上方,以便它可以保持可見,方法是計算保持文本字段可見的滾動量,然後使用一個轉換,以移動遠處的框架。進一步擴展UITableView

由於UIView仍處於活動狀態,因此我可以繼續在較小視圖中滾動並選擇其他文本條目並對其進行更改。

發生問題,我看不到列表中的底部項目。我想將不滾動的「容差」擴展爲與鍵盤的高度相等,然後在關閉鍵盤後將其設置回默認值。

謝謝。

+0

那麼你的問題是什麼?對我來說,就像你已經搞清楚了一樣。 – fzwo

+0

我的問題是如何增加滾動容差。如果我在滾動視圖和高度爲146的鍵盤上有600個像素的內容,並且從視圖頂部選擇了一些內容,然後滾動窗口(鍵盤仍然向上),則無法訪問最後146個像素的內容沒有先關閉鍵盤。 – VerticalEvent

回答

1

一個不錯的方式可能看起來不錯,不僅僅是滾動tableView,而是將整個tableView(也許是它的周圍視圖)移動到鍵盤的高度(當然,在解散時再次下降)。

myTableView.center = CGPointMake(myTableView.center.x, myTableView.center.y - keyboardHeight); //and vice versa for keyboard dismissal 

如果這可行,您可以試驗動畫。

如果您希望能夠將tableView向上滾動超過正常範圍,您可以嘗試在滾動之前設置其屬性contentSize。由於UITableViewUIScrollView的子類,如果Apple不以某種方式覆蓋它的行爲,這應該起作用。

myTableView.contentSize = CGSizeMake(myTableView.contentSize.width, myTableView.contentSize.height + keyboardHeight); //and vice versa when keyboard is dismissed 
+0

這對我來說很合適,但我給出的視圖是一個標準視圖,所以我不得不遍歷子視圖來查找可以調整內容大小的滾動視圖。 – VerticalEvent

+0

但要小心 - 蘋果公司不喜歡我們在類似的課程中徘徊。我只記得一種不需要枚舉子視圖的方法:使用所需的大小向表添加頁腳視圖。 – fzwo

1

爲什麼要修改表格的框架?你可以在UITableView上使用scrollToRowAtIndexPath:atScrollPosition:animated:,然後當鍵盤出現並消失時,你不必擔心修改tableview的框架

+0

從我可以收集的內容來看,標準的做法是計算所需的移動距離並移動框架的底部。正在使用的代理也可以用於其他領域,然後在發生這種情況時使用滾動視圖,所以我們希望保持一致。 此外,scrollToRow可能無法在iPhone鍵盤出現數字的情況下使用ToolBar覆蓋和「完成」按鈕關閉數字鍵盤。 – VerticalEvent