UITableView 中的 UISlider 没有响应滑动手势

Posted

技术标签:

【中文标题】UITableView 中的 UISlider 没有响应滑动手势【英文标题】:UISlider in UITableView not responding to swipe gesture 【发布时间】:2015-06-03 16:58:14 【问题描述】:

我尝试将 UISlider 插入 UITableViewCell,但滑动手势无法正常工作。对于滑动需要按住并移动拇指,但我想在不按住的情况下获得滑动手势。我认为 tableview 自己的手势不允许这样做,但我不知道如何禁用它。

【问题讨论】:

禁用UITableView 的平移手势或禁用UITableView 上的滚动将使平移手势起作用。或者,您可以使用一些 UIGestureRecognizerDelegate 方法来尝试让两个手势识别器同时工作。 @keithbhunter 如何禁用平移手势?你能帮我找到例子吗? 我认为tableView.scrollEnabled = false 会禁用它。 @keithbhunter 不,它没有帮助( 【参考方案1】:

使用- gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 将属性设置为 YES。然后你可以在一个函数中添加一个检查来决定对哪个手势进行操作。

【讨论】:

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: not called ,我不使用自定义手势识别器。如果我将 UISlider 添加到 UIView ,它可以正常工作,但在表格视图中它不起作用.. 你在课堂上实现UIGestureRecognizerDelegate了吗?【参考方案2】:

我最近遇到了同样的问题。它发生在 UITableViewController 的静态单元格中,它是从情节提要中实例化的。我找到了一个丑陋的解决方法,但很高兴看到一个更好的解决方案。

所以我禁用了 UITableViewController 的 self.view 和 self.view.superview 的所有手势识别器:

- (void)disableGestureRecognisersInView:(UIView*)view 

    for ( UIView *subview in view.subviews ) 
        for ( UIGestureRecognizer *rec in subview.gestureRecognizers ) 
            rec.enabled = NO;
    


- (void)viewWillAppear:(BOOL)animated 

    [super viewWillAppear:animated];

    [self disableGestureRecognisersInView:self.view];
    [self disableGestureRecognisersInView:self.view.superview];

现在 UISlider 工作正常,也没有注意到任何其他问题,因为这个解决方法。但我还是不喜欢。

【讨论】:

以上是关于UITableView 中的 UISlider 没有响应滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

为 UISlider 的 valueChanged 更新 UITableView titleForFooterInSection?

当我滚动时,uitableviewcell 中的 UIslider 不再自动更新

在 UIAlertView 中使用滑块?

如何在 UITableView 中引用 UITableViewCell

UISlider 在 UITableViewCell 中不起作用

以编程方式在 UITableViewCells 中嵌入多个 UISlider 和 UILabel 控件