如何在父TapGestureRecognizer之前触发UIButton目标事件

时间:2015-11-06 06:49:53

标签: ios swift events uibutton touch

这是一个简单的问题, 我有UIButton目标操作

addTarget(self, action: "buttonPressed", forControlEvents: UIControlEvents.TouchUpInside)
func buttonPressed()
{
    self.selected = !self.selected
}

此按钮是父UIView

的子项
containerView.addSubview(button)

我在容器中添加UITapGestureRecognizer

let tapG = UITapGestureRecognizer(target: self, action: "toggleView:")
containerView.addGestureRecognizer(tapG)
func toggleView(gest:UIGestureRecognizer)

我检查按钮的状态。

问题是在toggleView()中,按钮的状态尚未设置... 是的!

修改

如果我这样做

print(button.selected)

我只在触摸事件之前获得按钮值,而不是新事件。

任何想法?

2 个答案:

答案 0 :(得分:0)

尝试更改

func toggleView(gest:UIGestureRecognizer)

func toggleView(gest:UITapGestureRecognizer)

希望它有所帮助!

答案 1 :(得分:0)

我没有完全了解您要完成的任务,如果您想在按钮点击时执行某些操作,而在ContainerView中点击外部时执行其他操作则可以执行

-(void)toggleView:(UITapGestureRecognizer *) gest{
     CGPoint tapLocation = [gest loactionInView:containerView];
     if(CGRectContainsPoint(button.frame, tapLocation)){
         // Tapped on Button
      }
     else{
         // tapped outside in containerView
      }
}

注意:由于我没有学习swift,我给了Objective-C片段。你应该能够轻松地将其翻译成快速:)