main.storyboard中,我有一个枪按钮和一个盾牌按钮。假设两个按钮同时被点击(不是完全相同的时间,但你知道我的意思)。
如何在单击两个按钮后执行一个操作?就像在这个例子中,如果枪和盾牌被点击,我想做一个标签说辩护。我要问的是我怎么能在视图控制器中。。。

最佳答案

像这样的事情应该能解决问题。将两个按钮连接到每个IBAction,并确保onButtonDown:由控制事件.TouchDownInside触发,并且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
            }
        }
    }
}

更新:
在循环中添加break语句以防止崩溃

09-15 20:23