UISwipeGestureRecognizer不按预期方式工作

问题描述:

因此,我正试图在我的应用程序的屏幕上为其中一个子视图添加滑动手势。我宣布手势识别如下:UISwipeGestureRecognizer不按预期方式工作

UISwipeGestureRecognizer *swiperR = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(switchStackingMode:)]; 
    [swiperR setDirection:UISwipeGestureRecognizerDirectionRight]; 
    [chart addGestureRecognizer:swiperR]; 

UISwipeGestureRecognizer *swiperL = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(switchStackingMode:)]; 
    [swiperL setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [chart addGestureRecognizer:swiperL]; 


-(void)switchStackingMode:(UISwipeGestureRecognizer *)sender { 
    NSLog(@"inside switchstack from gesture"); 
    //other stuff 
} 

当我尝试与应用程序启动子视图互动,只有滑动手势swiperL工作。我没有回应正确的刷卡。我最初尝试使用方向(UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)只做一个手势识别器,但没有奏效,并且基于其他堆栈溢出答案,我还原为两个单独的识别器。仍然没有运气,这让我感到困惑。我觉得我失去了一些东西..

+0

你的代码似乎很好,它正在检测左右滑动。 – Leena 2012-07-19 13:33:55

+0

上述确定对我来说很好。 – Bourne 2012-07-19 13:34:26

+0

当我在图表子视图上向左滑动时,NSLog会打印。当我向右滑动时,没有任何反应。 – ascendancy05 2012-07-19 13:34:48

我在这里回答了这个问题Setting direction for UISwipeGestureRecognizer。我相信这个错误是你不能让你的“动作”名称相同,即没有两个名为“switchStackingMode”的选择器。使用switchStackingModeRight和switchStackingModeLeft。

此代码应该工作。你正在尝试使用设备吗?在模拟器中轻扫手势并不那么容易。

您只能执行一个手势,右侧和左侧都可识别。 这种方式适用于左右或上下,但不适用于所有方向。

+0

我想在设备上。通过在我的“图表”上叠加一个按钮并添加手势进行一些测试后,我所拥有的代码应该可以工作。在这一点上,我觉得值得一提的是我正在与Shinobi Charts合作,也许正确的姿态被忽略了。试图制定解决方法 – ascendancy05 2012-07-19 13:47:43

+0

也许我可以在图表下方放置一个UIButton,并以某种方式将滑动手势通过图表传递给按钮? – ascendancy05 2012-07-19 14:03:48

+0

或者在图表上方添加一个清晰的UIView,并在其上添加手势 – iSofTom 2012-07-19 14:27:07