启用Tableview滚动但禁用触摸

时间:2017-07-07 05:36:54

标签: ios swift uitableview

我想禁用我的tableview。意味着没有按钮,TextFields和其他控件可以触摸,但我也希望我的tableview滚动应该正常工作。

self.tableView.userInteractionEnabled=true;

我已经使用了这个但是滚动也会禁用。

6 个答案:

答案 0 :(得分:2)

您应该将要禁用userInteractionEnabled单元格的元素的个别UITableView属性设置为NO,而不是整个UITableView

例如,myButton.userInteractionEnabled = NO;

在整个NO上将其设置为UITableView会禁用任何用于滚动的手势识别器。

答案 1 :(得分:1)

只需将userInteractionEnabled设置为 false 即可UITableViewCell

func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell {
  // do your stuffs
  cell.userInteractionEnabled = false
  return cell
}

取消选择

tableView.allowSelection = false

答案 2 :(得分:1)

您只需设置isUserInteractionEnabled& selectionStyle

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        cell.selectionStyle = .none;
        cell.isUserInteractionEnabled = false;

        return cell
    }

答案 3 :(得分:0)

尝试覆盖UITableView touchesShouldCancelInContentView方法:

// OC代码:

- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    //when you want to scroll and touch event don't deliver to controls. 
    if ([view isKindOfClass:[UIControl class])){
          return YES;
    }

    return [super touchesShouldCancelInContentView:view];
}

答案 4 :(得分:0)

您可以在开始滚动时禁用选择。实施UIScrollViewDelegate

scrollViewWillBeginDragging:

tableView.allowsSelection = NO;

scrollViewDidEndDragging:willDecelerate:

tableView.allowsSelection = YES;

答案 5 :(得分:0)

选择tableViewCell并取消选中启用用户交互的属性
enter image description here

并选择tableView并检查滚动启用属性
enter image description here
工作正常。