做电影网站需要什么手续,企业概况简介,开发网站服务,怎么免费申请个人网站嵌套滚动的机制
目前的结构是这样的#xff0c;整个页面是一个大的tableView, Cell 是整个页面的大小#xff0c;cell 中嵌套了一个tableView 通过测试我们发现滚动的时候#xff0c;系统的机制是这样的#xff0c; 我们滑动内部小的tableView, 开始滑动的时候#xff0c…嵌套滚动的机制
目前的结构是这样的整个页面是一个大的tableView, Cell 是整个页面的大小cell 中嵌套了一个tableView 通过测试我们发现滚动的时候系统的机制是这样的 我们滑动内部小的tableView, 开始滑动的时候如果内部小tableview没有滑到最大偏移量contentSize.height - bounds.size.height 我们滑动 内部小的tableView的时候 如果该方向上外层tableView没有滚动到 最后一个向上滚动的时候是第一个 则内部tableView滚动到最大偏移量的时候直接带动外层 tableView滚动如果外城是pagingEnabeled 的话则外层的展示一个弹性效果 如果内部的滚动到边界的时候外层的tableView已经滚动到头了则内部的tableView 展示一个弹性效果。
如果我们开始滑动内部小的tableView的时候tableView在该方向上已经滚动到头了则直接执行外层tableView的滚动 如果外层在该方向上没有到头则滚动外层tableView, 如果外层tableView在该方向上已经滚动到头了则外层tableView 展示一个弹性效果
这个时候就有一个问题就是正常的情况下如果我们滑动内部 小的tableView, 如果开始滑动的时候 内部的tableView 没有滚动 到尽头我们滑动其滚动到尽头的时候根据上面的机制就会带动外层的tableView滚动这是我们不想看到的 所以我们可以这样 内部的tableView没有滚动到尽头的时候开始拖动这个时候会执行内层的begindragging, 如果 开始拖动的时候内部的tableView已经滚动到尽头了则会直接执行外层begindragging, 由此我们可以 在内层tableView 的 begingdragging 代理方法开始执行的时候禁止外层的tableView滚动在内层的停止滚动之后 再允许外层的滚动
这个效果图是自然状态下的效果
这个效果是经过我们处理之后的效果滑动内部的时候不会 引起外层的滚动
//
// LBDouyinCell.m
// TEXT
//
// Created by mac on 2024/7/7.
// Copyright © 2024 刘博. All rights reserved.
//#import LBDouyinCell.hinterface LBDouyinCell () UITableViewDelegate, UITableViewDataSourceproperty (nonatomic, strong) UITableView *commentTableView;property (nonatomic, strong) UILabel *titleLabel;endimplementation LBDouyinCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{if (self [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {[self setUpUI];}return self;
}- (void)setUpUI
{[self.contentView addSubview:self.commentTableView];[self.contentView addSubview:self.titleLabel];[self.commentTableView reloadData];
}- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{self.parentTableView.scrollEnabled NO;NSLog(阿哈哈哈内层的内层的scrollViewWillBeginDragging);;
}- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{NSLog(哈哈哈哈哈内层的内层的scrollViewDidScroll);
}- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{self.parentTableView.scrollEnabled YES;
}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{if (!decelerate) {//self.parentTableView.scrollEnabled YES;}
}#pragma mark - UITableViewDelegate, UITableViewDataSource- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{return 5;
}- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{return 60;
}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{UITableViewCell *cell [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])];cell.textLabel.text [NSString stringWithFormat:哈哈哈这里是第%ld条, indexPath.row];return cell;
}- (void)updateWithTitle:(NSString *)title
{self.titleLabel.text title;
}#pragma mark - lazy load- (UILabel *)titleLabel
{if (!_titleLabel) {_titleLabel [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 200, 50)];_titleLabel.backgroundColor [UIColor magentaColor];_titleLabel.text 我是标题;}return _titleLabel;
}- (UITableView *)commentTableView
{if (!_commentTableView) {_commentTableView [[UITableView alloc] initWithFrame:CGRectMake(0, 400, 200, 200) style:UITableViewStylePlain];_commentTableView.contentInsetAdjustmentBehavior UIScrollViewContentInsetAdjustmentNever;[_commentTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];_commentTableView.delegate self;_commentTableView.dataSource self;}return _commentTableView;
}/*
#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {// Get the new view controller using [segue destinationViewController].// Pass the selected object to the new view controller.
}
*/end
这里demo link