如何停止UITextView滚动UITableView

时间:2012-03-05 17:55:15

标签: ios xcode uitableview ios5 uitextview

我有一个只有三个单元格的自定义表格。在第三个单元格中,我有一个textView。三个单元格占据了屏幕上足够的空间,因此只剩下键盘空间。我不希望任何东西可移动或可滚动,所以我使用了self.tableView.scrollEnabled = NO;

这适用于早期版本的iOS。但是对于iOS 5,它显示了一些奇怪的行为。当我在textView中输入多行文本时,整个表格会向上滚动。理想情况下,表格应该粘在那里,只有textView可以滚动。

在尝试了很多东西之后,我发现textView放置得离键盘很近(因为textView放在最后一个单元格中,就在它下面就是键盘),iOS试图将textView向上移动,为此滚动整个表格。有没有办法停止tableView的自动滚动。

我发现这里提到了同样的问题 Disable UITextView scrolling the containing view? 但它还没有回答。并且那里提到的解决方法对我来说不起作用,因为我的包含视图本身是可滚动的(UITableView

2 个答案:

答案 0 :(得分:3)

对我来说,我在这个表视图中使用滚动

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

答案 1 :(得分:0)

一种解决方案是动态添加全新的子视图。将UITextView添加到self.view并为其指定一个与屏幕上相同位置对应的框架。表格视图现在不应滚动。

如果这不起作用因为self.view是表视图,请将控制器更改为类UIViewController并自己实现委托和数据源方法(即必须在{{{ 1}}声明)。然后,表格视图应该是@interface的子视图,您必须通过IB连接它。

在关闭键盘之前,请将内容复制到原始文本视图中。