在main.storyboard
,我有一个枪按钮和一个盾牌按钮。说两个按钮是同时点击(不完全是同一时间,但你知道我的意思)。Swift - 如果按下2个按钮时如何做出一个动作?
如何在两个按钮被点击后做出一个动作?就像在这种情况下,如果枪和盾被点击了,我想让一个标签捍卫。几乎我所要求的是我怎么会在视图控制器...
在main.storyboard
,我有一个枪按钮和一个盾牌按钮。说两个按钮是同时点击(不完全是同一时间,但你知道我的意思)。Swift - 如果按下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
声明中循环,以防止崩溃
我会在每个按键逻辑添加语句。例如,在屏蔽按钮中,我会添加“如果枪是活动显示标签”之类的内容,并在枪的逻辑“如果屏蔽是活动的显示标签”中添加类似的声明。您可能需要使用特定于您的防护罩或喷枪动作的值,如“如果屏蔽值== 50”。如果您计划使用多个组合并创建一个通用操作,然后每个if语句将会为您调用,那么您可以再往前走一步。
非常感谢:D –
我刚碰到这个代码的一个新问题。当我在我的iPhone上运行时,当您单击两个按钮时,应用程序会在我的标签文本更改后立即崩溃。在Xcode中它说“致命错误:数组索引超出范围” –
我的歉意!在那里加上那个'break',你应该很好。 –