2015-06-13 32 views
0

main.storyboard,我有一个枪按钮和一个盾牌按钮。说两个按钮是同时点击(不完全是同一时间,但你知道我的意思)。Swift - 如果按下2个按钮时如何做出一个动作?

如何在两个按钮被点击后做出一个动作?就像在这种情况下,如果枪和盾被点击了,我想让一个标签捍卫。几乎我所要求的是我怎么会在视图控制器...

回答

2

这样的事情应该做的伎俩。将两个按钮连接到每个IBAction,并确保onButtonDown:由控制事件​​触发,并且onButtonUp:.TouchUpInside.TouchDragExit两者触发。

class ViewController : UIViewController { 

    var buttonsPressed: [UIButton] = [] 

    // Triggered by .TouchDownInside 
    @IBAction func onButtonDown(sender: UIButton) { 
     self.buttonsPressed.append(sender) 

     if self.buttonsPressed.count == 2 { 
      // Both buttons are pressed 
     } 
    } 

    // Triggered by .TouchUpInside and .TouchDragExit 
    @IBAction func onButtonUp(sender: UIButton) { 
     for i in 0..<self.buttonsPressed.count { 
      if self.buttonsPressed[i] == sender { 
       self.buttonsPressed.removeAtIndex(i) 
       break 
      } 
     } 
    } 
} 

UPDATE: 添加一个break声明中循环,以防止崩溃

+0

非常感谢:D –

+0

我刚碰到这个代码的一个新问题。当我在我的iPhone上运行时,当您单击两个按钮时,应用程序会在我的标签文本更改后立即崩溃。在Xcode中它说“致命错误:数组索引超出范围” –

+0

我的歉意!在那里加上那个'break',你应该很好。 –

0

我会在每个按键逻辑添加语句。例如,在屏蔽按钮中,我会添加“如果枪是活动显示标签”之类的内容,并在枪的逻辑“如果屏蔽是活动的显示标签”中添加类似的声明。您可能需要使用特定于您的防护罩或喷枪动作的值,如“如果屏蔽值== 50”。如果您计划使用多个组合并创建一个通用操作,然后每个if语句将会为您调用,那么您可以再往前走一步。

相关问题