2012-02-12 100 views
4

我創建了UITableView,它的類型爲。然後我創建了幾個不同的部分,每個部分都有幾行。在每個這些行中,我創建了一個包含UITextField的自定義UITableViewCell。我也有一個UITableViewCell,其中包含UITextView爲什麼編輯UITextField(在UITableViewCell中)時UITableView'自動滾動'? (iPhone)

我已實施了對UIKeyboard的頂部出現,允許用戶通過按以前下一個通過UITextField的移動UIToolbar

我遇到的問題是雙重的:

  1. 我需要的UITableView如此滾動當下次UITextField(或UITextView)成爲第一個響應者是可見的(即使鍵盤是顯示)。
  2. UITextField(或UITextView)被選擇(不使用以前按鈕)是應該調整使得場是鍵盤上方可見。

我環顧了很多不同的教程,但是他們都沒有解決我的問題。任何幫助你可以提供將非常感激。

附加信息:

100%肯定所用我的應用程序做的所有自動上述情況,但我似乎已經停止,現在這樣做,我不明白爲什麼。這有可能發生嗎?是否有一些功能或者我可能已經改變的東西來破壞這種行爲?

+0

如果將'UITableViewController'作爲'detailViewController'嵌套到'UISplitViewController'中,該怎麼辦?它將停止自動滾動。理由尚未清除,似乎錯誤。 – jeeeyul

回答

4

檢出TaggedLocations來自蘋果的示例代碼。它做同樣的事情,沒有任何額外的操作。

關鍵是您的視圖控制器遵循標準。即你是不是具有容器視圖控制器,如UIViewController內的UINavigationController。

+1

嘿。杜你知道什麼具體需要遵守,使這項工作?最近我們已經用自定義的書寫菜單交換了標準的UITabbarController。現在:如果我將焦點設置到自定義單元格內的輸入字段,則uitableview未正確調整大小以適合鍵盤上方,並且inputfiled卡在鍵盤下方。 – esbenr

+0

@esbenr看到ade的答案 - 你重寫UITableViewController中的viewWillAppear方法嗎? – joelsand

+2

只需關閉此主題。我已經找出問題所在。如果你的ViewController派生自UITableViewController(正如Apple所說的那樣),那麼UITableViewController clas通過實現UITextFieldDelegate,UIScrollViewDelegate等來處理這種行爲。當我改變從UIViewController派生並在viewcontrollers uiview。所以基本上我缺少UITableViewController的功能,因爲我(由於其他原因)選擇從UIViewControler派生。 – esbenr

-5

您必須更新tableview以編程方式構建自己的... 並且我100%確定如果您100%確定自己的應用程序用於自動執行上述所有操作,則不是您的應用程序。

檢查docs..here是鏈接

https://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/ManageTextFieldTextViews/ManageTextFieldTextViews.html#//apple_ref/doc/uid/TP40009542-CH10-SW1

你必須註冊鍵盤notifications..and然後更新您的tableview框架。 對於下一個和上一個..你必須以編程方式檢查哪個文本字段變爲活動..然後相應地設置框架。

14

現在可能對原始海報沒有用處,但那些有這樣的問題的地方曾經有過工作,然後停下來......

檢查你沒有一個:

- (void)viewWillAppear:(BOOL)animated 

在你的UITableViewController子類!

使用viewWillAppear在UITableViewController中打破了「出現鍵盤時出現automagic tableView向上滾動」行爲。

我只是通過費力地比較一個項目的舊版本,發現它與我的最新源代碼一起工作,發現它已停止工作,我才發現它。

+11

謝謝!我們遇到了同樣的事情;它的工作,然後它沒有工作,並不明白爲什麼。爲了詳細說明你的答案,你仍然可以重寫viewWillAppear:方法,並通過在你自己的viewWillAppear:方法內調用[super viewWillAppear:animated]來保持automagic滾動。 – joelsand

+0

啊,這很可能是我錯過的,爲澄清而歡呼:) – ader

+1

非常感謝!我在這裏瘋了!大家應該知道,加入[super viewWillAppear:animated];將使它按照預期的方式再次運行(正如joelsand所說)。 –

相關問題