如何在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

我的代码有效。 这不是一个问题。 问题是我需要立即进行这些更改,而不是将手指从屏幕上松开。

所以,不要回答我如何锁定滚动! 我知道怎么做。

  1. 选择tableview
  2. 选择Attribute insepector
  3. 在滚动视图部分中,取消选中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 } }