2011-05-23 74 views
5

我有一個UITableViewCell與UITextField。在編輯模式下,當鍵盤出現時,我嘗試編輯的行被鍵盤重疊。理想情況下,行應該向上滾動,以便我可以編輯單元格。使顯示鍵盤上的tableviewcell向上滾動

我已經搜索了stackoverflow,發現了幾種不同的解決方案。他們中的大多數都與計算有關,以移動或滾動視圖。現在有一個來自Apple的示例代碼,稱爲TaggedLocations。他們有完全相同的行爲。並且沒有任何代碼會執行任何複雜的計算來移動視圖。

我也徹底檢查了IB接口,無法找到任何奇特的事情。如果您下載並運行代碼,它會將該行完美地推到一個完美位置進行編輯。

有沒有人知道TaggedLocations項目中有什麼技巧可以優雅地做到這一點?項目地點: http://developer.apple.com/library/ios/#samplecode/TaggedLocations/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40008914

對於複雜的計算,我是指,看看下面的線程,例如:

How to make a UITextField move up when keyboard is present?

感謝

回答

1

我想出了問題。 起初我

TabBarController
- UIViewController的
- UINavigationController的
---的UITableViewController

- UIViewController的
- -UINavigationController
---的UITableViewController

有了這樣的當顯示鍵盤時,表格單元不會捲起。但是,如果我將層次結構更改爲以下版本,則不需要任何額外的代碼即可完成捲起!

TabBarController
- UINavigationController的
- 的UITableViewController

- UINavigationController的
- 的UITableViewController

當我複製了蘋果的代碼,我莫名其妙地搞砸的層次結構。現在切換到新的層次結構,它工作正常。 無需額外的代碼或計算。

+0

我有完全相同的問題,但是我有你提到的糾正你的問題的血流。但是我的問題依然存在。你遇到過可能導致它發生的其他問題嗎? – 2012-02-12 14:33:02

+0

謝謝。你的答案真的有幫助。另外,如果你不能從層次結構中消除UIViewController,你可以創建一個以你的tableview控制器爲根的UINavigationController,並將導航控制器的視圖作爲子視圖添加到你的VC中。希望它有助於一個! – Vignesh 2012-09-03 12:22:03

1

這條線RootViewController.m是什麼原因引起的滾動:

[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

把那個放在你的cellForRowAtIndexPath:方法,它應該工作。

+0

我試過了。不是這個。這隻能用於添加新事件。如果你看到,滾動也適用於編輯。此外,標籤選擇也具有類似的行爲,並且沒有您提到的這種滾動代碼。而且它不在cellForRowAtIndexPath:方法中。 – mbh 2011-05-23 00:11:08

+0

對不起,'cellForRowAtIndexPath:'可能不是最好的方法。那麼如何讓你的類符合UITextFieldDelegate,然後在'textFieldDidBeginEditing'中以某種方式得到文本字段所在行的索引路徑,然後在該方法中調用上面的代碼行?我沒有真正深入蘋果的代碼,但「scrollToRowAtIndexPath」似乎正是你想要的... – 2011-05-23 00:20:03

+0

對不起,這不是正確的代碼。這是行不通的。即使你評論出來,你也會得到同樣的行爲。 – mbh 2011-05-23 02:02:42

0

或調用viewWill如果您有自己的控制器層次結構,那麼表格視圖將自動滾動單元格,使其在出現鍵盤時可見。

0

我對蘋果的示例代碼TaggedLocations有類似的困惑,雖然在我的情況下,我意識到我的表視圖是由UIViewController子類管理的,而不是UITableViewController子類,而UITableViewController顯然是爲您管理滾動。它工作得很好,所以很多這些複雜的計算是不必要的。我希望我沒有花那麼多時間來解決問題。

我不明白爲什麼您描述的層次結構很重要。只要UITableViewController管理文本字段,它應該自動處理滾動以避免鍵盤。