我想禁用我的tableview。意味着没有按钮,TextFields和其他控件可以触摸,但我也希望我的tableview滚动应该正常工作。
self.tableView.userInteractionEnabled=true;
我已经使用了这个但是滚动也会禁用。
答案 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)