我的應用程序中有一個系統設置,用戶可以捏住視圖將其展開爲全屏(如Flipboard)。但是,當我這樣做時,我想禁用一些在兩種模式下都可見的按鈕。通常它工作正常,但它在以下邊緣情況失敗:已禁用的按鈕仍然會調用目標
1)非縮放模式按鈕(不要放開)
2)夾視圖放大,並等待它完成動畫。該按鈕然後將其userInteractionEnabled
設置爲NO
。
3)釋放按鈕,無論如何調用目標函數。我在目標函數中放置了一個斷點,並使用lldb來檢查按鈕,並且userInteractionEnabled
確實設置爲NO
。
我錯在期待一個被禁用的按鈕不應該觸發它的目標?我應該在目標函數中檢查這個嗎?
這裏是實際禁用按鈕的功能,以防萬一你想看(編輯:似乎有一些混淆。下面的代碼沒有什麼問題,我只是把它包括在內是徹底的。)
//The function that disables the buttons
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIView *view = nil;
if(buttons & SO2Mokuji)
{
view = [self.view viewWithTag:151];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
if(buttons & SO2NoteView)
{
view = [self.view viewWithTag:152];
view.alpha = 0.5;
view.userInteractionEnabled = NO;
}
//etc, etc...
}
UPDATE:
我改變上述本具有相同的結果
- (void)disableButtons:(SO2MenuButtons)buttons
{
UIButton *view = nil;
if(buttons & SO2Mokuji)
{
view = (UIButton *)[self.view viewWithTag:151];
view.enabled = NO;
}
if(buttons & SO2NoteView)
{
view = (UIButton *)[self.view viewWithTag:152];
view.enabled = NO;
}
//etc, etc...
}
編輯看來我並沒有清楚地傳達出問題所在,所以我把一個簡單的項目放在一起展示了問題。您可以下載它here(根據您閱讀此消息,上一個鏈接可能已過期)。問題在於該按鈕在其被禁用後仍然在觸發其目標方法。看了看上面的頁面是什麼樣子,我爲使用提交程序而道歉......我不知道現在共享項目的流行方式是什麼> _ <。不要點擊大綠色下載按鈕,點擊,說:「下載文件」的一個
你有什麼問題,你想啓用按鈕? – Dinesh 2012-04-27 05:46:28
@Dinesh我不希望它在我禁用它之後觸發目標方法。 – borrrden 2012-04-27 05:48:16
你的問題是當按鈕禁用狀態時觸發目標方法..! – Dinesh 2012-04-27 05:50:25