我正在使用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.
如何识别用户是否在此方案中向左滑动?
答案 0 :(得分:2)
试试这个:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer {
CGPoint translation = [gestureRecognizer translationInView:self.view];
if (ABS(translation.x) > ABS(translation.y)) {
return YES;
}
return NO;
}