如何停止UITextView滚动UITableView

问题描述:

我有一个只有三个单元格的自定义表。在第三个单元格中,我有一个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

一种解决方案是即时添加全新的子视图。将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

对我来说,我的工作与周围的滚动在这样

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