2010-01-09 42 views
4

我知道這是一個常見問題,UITableViewController解決了這個問題,但是UITableViewController沒有像我期望的那樣工作,可能是由於我如何使用它。這是我的問題:另一個關於「鍵盤掩蓋UITextField」問題

我正在一個窗體,它是在一個分組表中,其中包含一些文本字段。 表單下部的那些被鍵盤擋住了。我知道這是一個古老的問題,並且有一些自動滾動的代碼示例,但是我還有一點要補充,並且想知道是否有人發現了這個問題,並且修復了它。

首先:從3.0開始,如果您的表由UITableViewController控制,您將自動滾動。我已經嘗試過了,確實有效。 但是,我想使用一個自定義的背景圖像,其中UITableViewController不玩球。下面是我做了什麼:

  1. 與普通視圖,其上有一個圖像創建XIB。
  2. 同樣在XIB內部,我有一個UIViewController(實際上是一個我自己的子類,當我寫數據源方法等時),它有表格。
  3. 在我的主視圖viewDidLoadMethod我試過這個: tableViewController.view.backgroundColor = [UIColor clearColor]; [self.view addSubview:tableViewController.view];

而且的確如此,表格顯示出我期望的樣子。 但是,當我點擊表格中的文本字段時,我沒有得到tableViewController旨在免費提供給我的「魔術」滾動。

就目前而言,它與我完全不使用TableViewController完全相同,並將表直接放到imageView上。 (坦率地說,減少1個班級,並且更容易閱讀代碼)。

我介紹一個TableViewController的唯一原因是爲了獲得這個自動滾動。

有什麼我失蹤?

回答

0

如果您選擇表中的最後一項,它確實無法在鍵盤上方滾動,因爲沒有足夠的表進行滾動。它儘可能地滾動,但這可能不足以使選定的項目可見。

我所做的是將表格調整爲在鍵盤上方完全可見。它不像應該那樣流暢,但足夠好==每個項目都可以看到。

+0

嗨JOM, 謝謝。我最後也做了同樣的事情。真的,我正在尋找一種方法來確保UITableViewController能夠照看它,所以我不必這樣做。我沒有找到辦法,所以使用了滾動的許多例子。 – dermdaly 2010-01-12 10:40:26

1

調整它的大小;如果你想平滑然後使用動畫塊。

[UIView beginAnimations:@"tableAnim" context:nil]; 
// 214 = keyboard size, adjust it if you have navigation bar or status bar 
tableView.frame = CGRectMake(0, 0, 320, 480 - 214); 
[UIView commitAnimations]; 
0

(從另一個SO問題重複我的答案):

我個人強烈建議由邁克爾·泰森使用TPKeyboardAvoiding

這非常容易使用...(從自述引用):

對於的UITableViewController類使用降 TPKeyboardAvoidingTableView.m和TPKeyboardAvoidingTableView.h到 您的項目,使您的UITableView一TPKeyboardAvoidingTableView 在廈門國際銀行。如果你沒有使用你的控制器的xib,我知道 沒有簡單的方法來使它的UITableView成爲一個自定義的類:阻力最小的路徑是爲它創建一個xib。

對於非UITableViewControllers,刪除 TPKeyboardAvoidingScrollView.m和TPKeyboardAvoidingScrollView.h 源文件到您的項目,彈出一個UIScrollView到您的視圖 控制器的廈門國際銀行,滾動視圖的類設置爲 TPKeyboardAvoidingScrollView,並把所有您在該滾動視圖中的控件。您也可以使用編程方式創建它,而不使用 xib - 只需使用TPKeyboardAvoidingScrollView作爲頂級 視圖。