UIButton TouchUpInside / TouchUpOutside并不总是被称为?

时间:2013-05-12 18:02:38

标签: iphone ios uibutton uiswipegesturerecognizer touch-up-inside

我有一个UISwipeGestureRecognizer相应地设置动画,以便在手势时突出显示UIButton,当UIButton调用TouchUpInside / TouchUpOutside时,它会完成动画。这适用于我UIButton上的向下滑动手势,但出于某种原因,当我尝试向上滑动(在另一个UISwipeGestureRecognizer上)时,它不会运行该功能。 (是的,它是相同的UIButton)这是我在viewDidLoad中所做的:

    [myButton addTarget:self action:@selector(myAction) forControlEvents:(UIControlEventTouchUpInside|UIControlEventTouchUpOutside)];

对于我刚才使用的动作:

    -(void) myAction{
    //Do whatever I want to do, in this case finish the animation.
    }

我为滑动手势运行的代码都不会影响UIButton,所以我想我想知道是否有人知道我在这里做错了什么?

编辑:似乎问题是,当我向上拖得太快时,按钮会失去“焦点”(突出显示),因此TouchUpInside / TouchUpOutside没有被调用,但当我以任何速度向下拖动时{ {1}}始终保持突出显示,无论如何要解决这个问题? (见GIF) Watch the highlight end before the mouse leaves the button, then when I do it again, but slower it works fine...

2 个答案:

答案 0 :(得分:2)

从下面的讨论中我了解到你已经在故事板中声明了UIGestureRecognizers,但也不必在代码中添加它们。尝试取消它们,查看UIButton触摸是否按预期工作,然后决定策略 - 创建并在故事板中全部分配它们或全部用代码分配。

答案 1 :(得分:1)

我修好了! (最后,非常愚蠢的我) TouchUpInside / TouchUpOutside未被调用的原因是因为我忘了添加

    myGesture.cancelsTouchesInView=NO;

对于我的所有手势识别器,无论如何都要感谢。