如何在UITableView中启用/禁用滚动?

时间:2016-03-01 11:37:00

标签: ios swift uitableview scrollview

我知道这个命令:

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滚动,我需要从屏幕上松开手指并再次滚动。在这种情况下它有效。

我想立即制作,因此当我在屏幕上滑动时,它会锁定并解锁滚动。我该怎么办?

更新

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

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

3 个答案:

答案 0 :(得分:1)

  1. 选择tableview
  2. 选择Attribute insepector
  3. 在滚动视图部分中,取消选中滚动已启用属性

答案 1 :(得分:0)

您需要为表视图设置平移手势识别器并保持监听侦听器。

通过你的方法可以锁定它。

    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
        }
    }

答案 2 :(得分:0)

滚动时强制contentOffset为最大值:

let topEdge = scrollView.contentOffset.y
let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50

if topEdge >= followersViewEdge {
    self.tableView.contentOffset.y = followersViewEdge
}