如何将panGestureRocgnizer添加到TableView,并且在识别平底锅的同时仍然具有tableview滚动?

时间:2015-06-13 05:38:53

标签: ios objective-c uitableview cocoa-touch

我正在使用ECSlidingViewController(github hamburger-menu / slide-out菜单项目)。

我有一个TableViewController,我需要将以下内容添加到我的TableViewController。

        ECSlidingViewController *ecsVC = (ECSlidingViewController *)viewController;
        ecsVC.panGesture.delegate = self;
        [self.view addGestureRecognizer:ecsVC.panGesture];

我无法做self.navigationcontroller.view addGestu...,因为如果我推送视图,那么我仍然可以获得我不想要的pangesture功能。我只想在这一个观点上看到它。

所以我必须做self.VIEW addGest...。但是,只要我这样做,tableView就会停止滚动。

如果我向右平移手指,汉堡包菜单会滑出来,但就像我说的那样,我的桌面视图不会滚动。

所以,我尝试使用- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {,但我不确定我是否正确使用它。

如果我返回YES,我的汉堡菜单会滑出,但我的tableview不起作用/滚动。如果我返回NO,则汉堡包菜单不起作用/滑出但是tableView可以正常工作。

所以我需要区分两者并相应地返回YES / NO。

但是,我如何区分不同的?

我不能在panGesture上使用target / action,因为那时-gestureRecognizer:shouldReceiveTouch永远不会被调用(这意味着我无法使tableview滚动)。如果我将gestureRecognizer转换为-gestureRecognizer:shouldReceiveTouch中的UIPanGestureRecognizer,并使用-velocityInView,因为我只获得了初始点击。所以我只得到X&每个0.0的Y.

如何识别用户是否在此方案中向左滑动?

1 个答案:

答案 0 :(得分:2)

试试这个:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
    CGPoint translation = [gestureRecognizer translationInView:self.view];

    if (ABS(translation.x) > ABS(translation.y)) {
        return YES;
    }

    return NO;
}