我有一个只有三个单元格的自定义表格。在第三个单元格中,我有一个textView。三个单元格占据了屏幕上足够的空间,因此只剩下键盘空间。我不希望任何东西可移动或可滚动,所以我使用了self.tableView.scrollEnabled = NO;
。
这适用于早期版本的iOS。但是对于iOS 5,它显示了一些奇怪的行为。当我在textView中输入多行文本时,整个表格会向上滚动。理想情况下,表格应该粘在那里,只有textView可以滚动。
在尝试了很多东西之后,我发现textView放置得离键盘很近(因为textView放在最后一个单元格中,就在它下面就是键盘),iOS试图将textView向上移动,为此滚动整个表格。有没有办法停止tableView的自动滚动。
我发现这里提到了同样的问题
Disable UITextView scrolling the containing view?
但它还没有回答。并且那里提到的解决方法对我来说不起作用,因为我的包含视图本身是可滚动的(UITableView
)
答案 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连接它。
在关闭键盘之前,请将内容复制到原始文本视图中。