UISwipeGestureRecognizer未按预期工作

时间:2012-07-19 13:29:50

标签: objective-c ios 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),但这不起作用,并且根据其他堆栈溢出答案,我恢复为两个单独的识别器。仍然没有运气,这让我感到困惑。我觉得我错过了什么......

2 个答案:

答案 0 :(得分:1)

此代码应该有效。你在试用一台设备吗?在模拟器中滑动手势并不容易。

您只能识别左右两个手势。 这种方式适用于左右或上下,但不适用于所有方向。

答案 1 :(得分:0)

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