如何在UITableView中启用/禁用滚动?
我知道这个命令:
self.tableView.scrollEnabled = true
问题是:我想根据scrollView位置锁定滚动。 为此,我这样做:
let topEdge = scrollView.contentOffset.y let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 if topEdge >= followersViewEdge { self.tableView.scrollEnabled = true }
它的工作原理,但问题是它不会立即锁定或解锁滚动。 要锁定或解锁UITableView滚动,我需要从屏幕上松开手指并再次滚动。 在这种情况下它有效。
我想立即制作它,所以当我在屏幕上滑动时它锁定并解锁滚动。 我该怎么做?
UPDATE
我的代码有效。 这不是一个问题。 问题是我需要立即进行这些更改,而不是将手指从屏幕上松开。
所以,不要回答我如何锁定滚动! 我知道怎么做。
- 选择tableview
- 选择Attribute insepector
- 在滚动视图部分中,取消选中Scrolling Enabled属性
滚动时强制contentOffset
为最大值:
let topEdge = scrollView.contentOffset.y let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 if topEdge >= followersViewEdge { self.tableView.contentOffset.y = followersViewEdge }
您需要为表视图设置平移手势识别器并保持监听侦听器。
通过你的方法可以锁定它。
if topEdge >= followersViewEdge { self.tableView.scrollEnabled = true }
通过平移手势识别器,您可以锁定/解锁它。
if(self.tableView.scrollEnabled) { self.tableView.scrollEnabled = false } else { self.tableView.scrollEnabled = true }
例
// Added the Pan Recognizer for capture the touches UIPanGestureRecognizer *panReconizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panReconizer:)]; panReconizer.maximumNumberOfTouches = panReconizer.minimumNumberOfTouches = 1; [self.tableView addGestureRecognizer:panReconizer]; - (void)panReconizer:(UIPanGestureRecognizer *)pan { NSLog(@" .............. pan detected!! ..................."); if(self.tableView.scrollEnabled) { self.tableView.scrollEnabled = false } else { self.tableView.scrollEnabled = true } }