2015-06-13 62 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語句將會爲您調用,那麼您可以再往前走一步。

相關問題