2011-06-13 220 views
1

我是iPhone編程的新手,當我使用此代碼啓用/禁用按鈕時,什麼都不會發生。我通過一個IBOutlet連接了我的按鈕,我知道當我在viewDidLoad中禁用它時它可以工作。我只是不知道爲什麼這種方法不起作用。啓用/禁用按鈕

- (void) multiplicationButtonPressed { 
    if (multiplicationIsPressed) { 
     multiplicationButton.enabled = NO; 
    } else { 
     multiplicationButton.enabled = YES; 
    } 
} 
+1

什麼是'multiplicationIsPressed'?也許它總是假的。 – 2011-06-13 04:38:09

+0

你是否設置了變量multiplicationIsPressed?您是否已將IB的按鈕的IBOuttlet連接到按鈕? – 2011-06-13 04:38:29

+0

一旦你禁用了按鈕,IBAction將不再工作,因爲你已經禁用了按鈕。嘗試使用seleced狀態爲您的目的。看到我更新的答案。 – 2011-06-13 05:33:18

回答

1

請檢查您的IBOutlet中已經正確連接了此按鈕與否,然後

使用這段代碼

- (IBAction) multiplicationButtonPressed 
{ 
    multiplicationButton.selected = !multiplicationButton.selected; 
} 

就是這樣。你不需要有任何布爾標誌。它像切換一樣工作。

+0

如果禁用按鈕,則不會調用multiplicationButtonPressed方法。我不認爲它會起作用。 – 2011-06-13 05:20:01

+0

@Chandan shetty SP對不起我的錯誤。謝謝(你的)信息。 – 2011-06-13 05:31:00

+0

感謝那些正是問題的人。現在它變得更有意義。非常感謝十億。 – 2011-06-13 05:46:11

0

請檢查您的IBOutlet中已經正確連接了此按鈕與否,然後

使用此代碼

- (IBAction) multiplicationButtonPressed 
{ 
    if (multiplicationIsPressed) { 
      multiplicationButton.userInteractionEnabled = NO; 
    } else { 
      multiplicationButton.userInteractionEnabled = YES; 
    } 
} 
0

有任意數量的原因,這可能失敗。沒有更多的上下文,我們只能猜測。

  • 如果在加載視圖之前調用了multiplicationButtonPressed,則該按鈕尚未創建。
  • 你說multiplicationButton被IB連接成IBOutlet,但你可能是錯的。它實際上連接了嗎?
  • 如果multiplicationButtonPressed是一個按鈕或其他控件的動作,它可能實際上並沒有連接到它應該連接的任何東西。這很可能是因爲你聲明爲(void)而不是(IBAction),所以除非.h文件中的聲明不匹配,IB甚至不會看到它。
  • 如果(顧名思義)multiplicationButtonPressedmultiplicationButton本身的動作,當按鈕當前未啓用時,將永遠不會調用該按鈕,因爲enabled設置爲NO的按鈕將永不響應觸摸。
  • 或者相同的問題可能存在於視圖層次結構中更高的位置:userInteractionEnabled設置爲NO的視圖的子視圖都不能響應觸摸。
  • 或者你的佈局可能被搞砸了,並且任何按鈕應該觸發這個事件都不在其所有父視圖的範圍內。如果所述父視圖沒有剪裁到邊界,您仍然可以看到該按鈕但不與其交互。
+0

謝謝。對不起,遺漏了更多信息。我將multiplicationButtonPressed設置爲BOOL值。我必須IBActions,如果我按乘法按鈕它禁用按鈕並將其設置爲YES。如果我按=按鈕將其設置爲YES,再次啓用它。但是,當我按下=按鈕時,它永遠不會再啓用它。然而,禁用部分工作正常。 – 2011-06-13 05:12:26