在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',你應該很好。 –