使用手势识别器时,表格视图不会滚动

时间:2013-07-12 12:10:19

标签: ios uitableview uigesturerecognizer

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

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

以下是带有问题的手势识别器代码:

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

有人有想法吗?

5 个答案:

答案 0 :(得分:43)

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

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

self.slidingViewController.panGesture.delegate = self;

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

答案 1 :(得分:10)

这是swift版本:

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

答案 2 :(得分:10)

我在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
}

答案 3 :(得分: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}

答案 4 :(得分:1)

如果我说得对,那么你要添加手势识别器的视图就是桌面视图。默认情况下,UIScrollView(以及隐式UITableView)类使用平移手势识别器进行滚动,并且您的手势识别器会干扰该操作。如果您使用另一个视图作为表视图的容器,并且您要将平移手势识别器添加到它应该可以工作。