1

我有一个大按钮,在它上面上下滑动会使用简单的手势触发一些方法。单击它会触发TouchUpInside带有 的事件largestButtonSingleTap。我的问题是,如果我点击 largeButton 并按住它,然后向上滑动一秒钟后,滑动手势将不起作用。试图找出原因。我在该按钮上还有一些其他事件,例如 DragInside 、 TouchDown 、 DragExit 、 TouchCancel 。我取消了所有这些并保留了一个空方法(注释掉了 largeButtonSingleTap 中的所有内容)但是,如果按下按钮 > 小暂停 > swipeUp > 将不会触发。谢谢

UISwipeGestureRecognizer *upRecognizer;
upRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeUp:)];
[upRecognizer setDirection: UISwipeGestureRecognizerDirectionUp];
[_largestButton addGestureRecognizer:upRecognizer];

    - (IBAction)largestButtonSingleTap:(UIButton *)sender
    { //some more code here

        [UIView animateWithDuration:0.4 animations:^() {
    ...
        }completion:^(BOOL finished){}];
    ...

}

-

编辑: 阅读此处建议的答案后,我开始了一个新项目,认为我的代码有问题,但仍然无法正常工作。这是新项目 http://pastebin.com/yz7NaqUD

4

3 回答 3

2

UISwipeGestureRecognizer 是离散手势,所以你不能这样做。

https://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html

Touchdown 可以与其他连续手势一起使用,例如平移、捏合、旋转。

尝试另一种方式,继承 UIButton 并实现 touchesMove。

参考:iOS 自定义手势识别器测量长按的长度

于 2013-03-05T19:14:32.950 回答
0

动画块可能会阻止用户交互。尝试在您的 largeButtonSingleTap: 方法中使用 allowUserInteraction 动画选项。

[UIView animateWithDuration:0.4 delay:0.0f options:UIViewAnimationOptionAllowUserInteraction animations:^{
    //
} completion:^(BOOL finished) {
    //
}];
于 2013-03-05T18:28:00.383 回答
0

尝试将代理设置为您的手势识别器并实现:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    return YES;
}
于 2013-03-05T18:42:00.890 回答