2011-10-17 51 views
0

我知道self.navigationItem.rightBarButtonItem.enabled = NO,但我如何使UIBarButtonItem出現禁用,但實際上檢測到用戶點擊它時?如果我想提醒用戶什麼是不完整的,我想這樣做。使UIBarButtonItem顯示爲禁用?

回答

1

我這樣做的方式並不禁用它,但是當它的'禁用'設置另一個酒吧按鈕項目與殘疾的看背景和沒有替代圖像的輕拍事件。然後,當它被點擊時顯示警告,以便告訴他們,這是不可用:

- (void)init 
{ 
    [self setDisabledBarButtonItem:[UIBarButtonItem alloc] initWith...]; 
    [disabledBarButtonItem addTarget:......]; 
    [self setEnabledBarButtonItem:[UIBarButtonItem alloc] initWith...]; 
    [enabledBarButtonItem addTarget......]; 

} 

- (void)timeToDisableBarButtonItem:(id)sender 
{ 
    [self.navigationitem setRightBarButtonItem:disabledBarButtonItem animated:NO]; 
} 

- (void)timeToEnableBarButtonitem:(id)sender 
{ 
    [self.navigationitem setRightBarButtonItem:enabledBarButtonItem animated:NO]; 
} 

好UX的做法狀態然而,你不應該需要告訴你的用戶,這是殘疾人,他們應該是無需警報即可辨認。說起來容易,當然比做:)

很想看到一個比這更清潔的解決方案,但它是唯一的方式,我認爲你會得到它的工作。

希望幫助:)

+0

謝謝,阿隆。我現在可能只是遵循良好的用戶體驗實踐,並明確什麼是不完整的。 :) – ma11hew28

1

我也有類似的問題,但我試圖讓被禁用按鈕看起來啓用。我發現了一個更好的解決方案,可以在iOS 5.0中使用 - 您可以使用setTitleTextAttributes:forState來控制已啓用(或在我的情況下已禁用)狀態以及其他許多狀態的外觀。

API參考: https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIBarItem_Class/Reference/Reference.html#//apple_ref/occ/instm/UIBarItem/setTitleTextAttributes:forState

在大多數情況下,你不會想這樣做。然而,就我而言,事實證明是必要的。我有一個工具欄按鈕,它是一個文檔標題,在編輯模式下按下它可以啓動一個UITextField來編輯標題,但在運行模式下,標題不應該是可編輯的,但仍然看起來像一個標題,而不是一個禁用的按鈕。通過改變文本顏色以匹配我的啓用狀態,我實現了我想要的外觀和行爲,而不必交換按鈕或動作(因此必須在三個地方而不是兩個地方同步我的標題文本)。