2012-03-05 63 views
2

我有一個只有三個單元格的自定義表。在第三個單元格中,我有一個textView。三個單元覆蓋了屏幕上的足夠空間,這樣只剩下鍵盤空間。我不希望任何東西是可移動的或可滾動的,所以我使用了self.tableView.scrollEnabled = NO;如何停止UITextView滾動UITableView

這適用於早期版本的iOS。但是在iOS 5中,它顯示出一些奇怪的行爲。當我在textView中輸入多行文本時,整個表格會向上滾動。理想情況下,表格應該粘在那裏,只有textView應該滾動。

在嘗試了很多東西之後,我發現textView放置在離鍵盤太近的位置(因爲textView放置在最後一個單元格中,正下方是鍵盤),iOS試圖將textView向上移動它將整個表格向上滾動。有什麼辦法可以阻止tableView的自動滾動。

我發現這裏提到的同樣的問題 Disable UITextView scrolling the containing view? 但是它也沒有被回答。並且在那裏提到的解決方法將不適用於我,因爲我的包含視圖本身可滾動(UITableView

+0

你會找到一個解決這個表視圖?遇到同樣的問題。 – 2012-03-23 18:48:23

+0

@SteveBaughman:不完全。我做了一個解決方法。 'UITextView'太靠近鍵盤了,因爲它正在向上移動。我增加了'UITextView'和鍵盤之間的距離來解決這個問題。我仍在尋找適當的解決方案來解決這個問題。 – Sam 2012-03-25 18:03:18

回答

0

一種解決方案是即時添加全新的子視圖。將UITextView添加到self.view並給它一個對應於屏幕上相同位置的框架。表格視圖現在不應滾動。

如果這行不通,因爲self.view是表視圖,改變你的控制器到一個類UIViewController和自己實現委託和數據源的方法(即就不得不提到他們在@interface聲明)。表格視圖應該是self.view的子視圖,並且您必須通過IB連接它。

在關閉鍵盤之前,請將內容複製到原始文本視圖。

+0

我以編程方式將subview添加到self.view中,但它不起作用。 從「UITableViewController」更改我的主視圖爲'UIViewController'不是我正在尋找的解決方案。由於這個問題是從iOS 5開始的,我相信必須有一些可以設置爲停止自動滾動的屬性或方法。 – Sam 2012-03-06 17:57:25

3

對我來說,我的工作與周圍的滾動在這樣

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if(self.tableView.contentOffset.y != 0) 
    { 
     self.tableView.contentOffset = CGPointMake(0, 0); 
    } 
}