cell里嵌套tableView客峭,需要根據(jù)偏移量判斷滑動(dòng)主tableView還是滑動(dòng)cellTableView,讓用戶體驗(yàn)感覺是一個(gè)整體。
做的過程碰到個(gè)問題棚点,就是滑動(dòng)到最底部,cellTableView無法繼續(xù)上拉滑動(dòng)了湾蔓,下邊有解決方法瘫析。
粘貼了主要代碼,完整邏輯可見demo:https://github.com/zhuzi55/LYCellTableViewDemo.git
SecondViewController.m
#pragma mark - 外部tableview滑動(dòng)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"tableview滑動(dòng) == %.2f", scrollView.contentOffset.y);
if (self.tableViewCanScroll == NO) {
self.tableView.contentOffset = CGPointMake(0, kHeaderViewHight);
}
if (self.tableView.contentOffset.y >= kHeaderViewHight) {
// 無表頭了
NSLog(@"++++++");
self.cellTableViewCanScroll = YES;
self.tableViewCanScroll = NO;
self.tableView.contentOffset = CGPointMake(0, kHeaderViewHight);
}
}
#pragma mark - cell嵌套列表滑動(dòng)控制 通過偏移量判斷是外部滑動(dòng)還是內(nèi)部滑動(dòng)
-(void)cellTableViewScroll:(UIScrollView *)scrollView{
NSLog(@"cellTableview滑動(dòng) == %.2f", scrollView.contentOffset.y);
if (self.cellTableViewCanScroll == NO) {
scrollView.contentOffset = CGPointZero;
}
if (scrollView.contentOffset.y < 0) {
self.cellTableViewCanScroll = NO;
self.tableViewCanScroll = YES;
}
}
-(void)cellTableViewDidEnedScroll:(UIScrollView *)scrollView{
CGFloat maxOffsetY = scrollView.contentSize.height - scrollView.frame.size.height;
if (scrollView.contentOffset.y >= maxOffsetY) {
scrollView.contentOffset = CGPointMake(0, maxOffsetY-1);
}
}
TestTableViewCell.m
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
if ([self.delegate respondsToSelector:@selector(cellTableViewDidEnedScroll:)]) {
[self.delegate cellTableViewDidEnedScroll:scrollView];
}
}
//
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if ([self.delegate respondsToSelector:@selector(cellTableViewScroll:)]) {
[self.delegate cellTableViewScroll:scrollView];
}
}
TestUITableView.m
//** 讓手勢(shì)支持多響應(yīng)
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}