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 不再自动更新
如何在 UITableView 中引用 UITableViewCell