Iphone 如何阻止iOS PinchGesture选择按钮?

Iphone 如何阻止iOS PinchGesture选择按钮?,iphone,ios,uibutton,uigesturerecognizer,Iphone,Ios,Uibutton,Uigesturerecognizer,我目前正在为iPhone编写一个iOS应用程序,其中有一个特别的功能,可以动态创建流程图。创建的流程图是一个巨大的可滚动视图。流程图的每个信息节点都包含自动将视图移动到下一个信息节点的按钮。在任何时间点,用户都可以使用收缩手势缩小当前信息节点并查看整个流程图 我的问题是:我注意到,如果用户的一个手指点击信息节点中的一个按钮,然后开始这个按压动作,那么这个手势优先,下一个节点显示为与从当前节点缩小的按压手势相反 我一直在关注StackOverflow,并尝试了几种方法来解决这个问题,但似乎还没有任

我目前正在为iPhone编写一个iOS应用程序,其中有一个特别的功能,可以动态创建流程图。创建的流程图是一个巨大的可滚动视图。流程图的每个信息节点都包含自动将视图移动到下一个信息节点的按钮。在任何时间点,用户都可以使用收缩手势缩小当前信息节点并查看整个流程图

我的问题是:我注意到,如果用户的一个手指点击信息节点中的一个按钮,然后开始这个按压动作,那么这个手势优先,下一个节点显示为与从当前节点缩小的按压手势相反


我一直在关注StackOverflow,并尝试了几种方法来解决这个问题,但似乎还没有任何效果。我想知道是否有人有过类似的问题,以及他们是否能够克服这个问题?

使用@Till的建议,并进一步研究我的问题,我做了一些对我有用的事情,我想我会在这里分享,以防其他人有类似的问题或愿望

我能够创建可以用作半按钮的UIView。对于这些视图中的每一个,我都将UITapGestureRecognizers变为灰色,并将它们定位于可以检查发送者的状态是否为StateEnd的方法:

-(void)handleButtonTap:(UITapGestureRecognizer *)sender
{
  if(sender.state == UIGestureRecognizerStateEnded)
    // Go on and do the code here
}
然而,为了保持原来的iOS按钮的外观,我又前进了一步。对于我创建的每个UIButton,我没有将目标与这些按钮关联,而是为每个按钮创建UIView。这些UIView是完全空白的,背景色为“Clear”。通过这种方式,我现在可以拥有我的按钮,但仍然可以获得我想要的功能


我希望这能帮助其他有类似问题的人。再次感谢@Till的建议。

使用@Till的建议,并进一步研究我的问题,我做了一些对我有用的事情,我想我会在这里分享,以防其他人有类似的问题或愿望

我能够创建可以用作半按钮的UIView。对于这些视图中的每一个,我都将UITapGestureRecognizers变为灰色,并将它们定位于可以检查发送者的状态是否为StateEnd的方法:

-(void)handleButtonTap:(UITapGestureRecognizer *)sender
{
  if(sender.state == UIGestureRecognizerStateEnded)
    // Go on and do the code here
}
然而,为了保持原来的iOS按钮的外观,我又前进了一步。对于我创建的每个UIButton,我没有将目标与这些按钮关联,而是为每个按钮创建UIView。这些UIView是完全空白的,背景色为“Clear”。通过这种方式,我现在可以拥有我的按钮,但仍然可以获得我想要的功能


我希望这能帮助其他有类似问题的人。再次感谢@Till的建议。

您是否尝试将
cancelsTouchesInView
设置为YES?是的,我尝试了@Till。我还试着让
PinchGesture
成为独家触摸,但这并不能阻止按钮在触摸开始时被选中。那么,不使用按钮而使用普通视图,并在每个按钮上添加点击手势来识别按钮点击,怎么样?这将允许您通过在点击手势上使用
requiregestureerecognizertofail
将按压手势作为该方法的参数,为按压手势赋予优先级。@到目前为止,这是一个好主意。我会尝试一下,看看这是否对我更有效。谢谢你的建议!您是否尝试将
cancelsTouchesInView
设置为YES?是的,我尝试了@Till。我还试着让
PinchGesture
成为独家触摸,但这并不能阻止按钮在触摸开始时被选中。那么,不使用按钮而使用普通视图,并在每个按钮上添加点击手势来识别按钮点击,怎么样?这将允许您通过在点击手势上使用
requiregestureerecognizertofail
将按压手势作为该方法的参数,为按压手势赋予优先级。@到目前为止,这是一个好主意。我会尝试一下,看看这是否对我更有效。谢谢你的建议!