我在uiscrollview中有两个uitableviews。我在一个ipad屏幕上显示滚动视图,因此它同时显示两个tableviews(即:左边的tableview和右边的tableview)。
通过使用以下代码,我可以使用tableviews的“公共滚动”(滚动一个tableview并同步移动另一个):
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
static BOOL isObservingContentOffsetChange = NO;
if([object isKindOfClass:[UITableView class]]
&& [keyPath isEqualToString:@"contentOffset"])
{
if(isObservingContentOffsetChange) return;
isObservingContentOffsetChange = YES;
if(theTableViewLEFT != object)
{
CGPoint offset = [[change valueForKey:NSKeyValueChangeNewKey] CGPointValue];
theTableViewLEFT.contentOffset = offset;
}
if(theTableViewRIGHT != object)
{
CGPoint offset = [[change valueForKey:NSKeyValueChangeNewKey] CGPointValue];
theTableViewRIGHT.contentOffset = offset;
}
isObservingContentOffsetChange = NO;
return;
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
所以,这很好。它是一个滚动视图,插入了2个总表格视图。每个视图的滚动工作正常。问题?当一个表比另一个表更长(离开屏幕)并滚动较短的表时,它们都会停止在较短的表结束的位置垂直滚动。即:如果左表比右表长,并且您向右滚动,它们都会停止在右表结束的位置滚动。但是,如果您滚动左侧表格,那么它们都会一直滚动到左侧表格的末尾,即:右侧表格向上滚动并离开屏幕,同时您仍然可以看到较长表格中的内容。这是我希望它运作的方式。
我真的不能告诉人们使用较长的表滚动。如何让两个表滚动较长表的整个高度?
答案 0 :(得分:1)
如果要将tableViews用作ScrollView的子视图,则必须禁用滚动选项。因为,tableView继承自scrollView。
因此,您可以禁用tableviews的scollEnabled属性,而不是添加观察者。所以tableViews不再滚动了。并将tableViews的最大内容大小作为滚动视图ContentSize。因此,如果您滚动任何表,它们将滚动到TableView contentSize的最大值。
例如:
UITableView *tblView1;// this is your left table View
UITableView *tblView2;// this is your right TableView
tblView1.scrollEnabled= NO;
tblView2.scrollEnabled= NO;
CGSize maxSize = CGSizeMake(MAX(tblView1.contentSize.width, tblView2.contentSize.width), MAX(tblView1.contentSize.height, tblView2.contentSize.height));
现在将此最大大小设置为scrollView的contentSize属性。
scrollView.contentSize = maxSize;
答案 1 :(得分:0)
我不清楚将表视图放入滚动视图的目的,因为它们都是滚动视图本身。但是,要回答您的问题,您只需设置较短表视图的contentInset
,使其bottom
等于两个表的高度差。