22

我的应用程序有一个表格视图(当然带有滚动条),并且这个视图可以通过手势识别器打开和关闭(就像在 Facebook 应用程序上一样)。

如果我使用按钮将[表格视图滑到屏幕上],它可以正常工作,但是当我使用手势识别器时,表格视图不能再滚动了。

这是有问题的手势识别器代码:

[self.view addGestureRecognizer:self.slidingViewController.panGesture];

有人有想法吗?

4

5 回答 5

46

您的手势可能会阻止滚动视图手势起作用,因为默认情况下一次只能识别 1 个手势。尝试将自己添加为手势的代表并实施:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

self.slidingViewController.panGesture.delegate = self;

另外,添加<UIGestureRecognizerDelegate>到您实施的协议列表中

于 2013-07-12T12:40:48.180 回答
14

我在我的 UItableview 中使用了 UIPangesture 并且为了避免我在委托下面使用的这个手势,

//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
    if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
        let translation = panGestureRecognizer.translationInView(superview)
        if fabs(translation.x) > fabs(translation.y) {
            return true
        }
        return false
    }
    return false
}
于 2017-07-28T13:55:54.103 回答
10

这是快速版本:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}
于 2015-08-12T09:06:31.780 回答
4

我遇到了在表格视图上定义长按手势并且在长按表格时无法滚动表格的问题。

修复者:

1-添加 UIGestureRecognizerDelegate

2-添加 gesture.delegate = self (after you defined the long press gesture)

3-添加此功能:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}

于 2015-08-14T17:13:22.783 回答
1

如果我做对了,您添加手势识别器的视图就是表格视图。默认情况下UIScrollView(和隐式UITableView)类使用平移手势识别器进行滚动,而您的手势识别器会干扰它。如果您使用另一个视图作为表格视图的容器并且您将平移手势识别器添加到它应该可以工作。

于 2013-07-12T12:42:08.177 回答