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

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

【问题讨论】:

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

标签: ios objective-c uitableview uislider


【解决方案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 工作正常,也没有注意到任何其他问题,因为这个解决方法。但我还是不喜欢。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多