[英]UIBarButtonItem in navigation bar is highlighted when selected but UIBarButtonItem in toolbar is not
我有一個簡單的UITableViewController
,將NavigationController
作為根視圖控制器。 我在導航欄上添加了“選項” UIBarButtonItem
,在工具欄上添加了“開始” UIBarButtonItem
,如下所示:
。 我遇到的問題是,當按下“選項”按鈕時,它會像常規的UIButton
一樣突出顯示,但是工具欄上的“開始”按鈕卻沒有。 這非常不方便,因為這使用戶很難知道他們是否真正按下了按鈕。 此行為如下所示:
未按下選項按鈕:
按下選項按鈕:
未按下開始按鈕:
按下開始按鈕:
我不知道如何解決此問題。 我確實確認“開始”按鈕確實有效,因此突出顯示問題不是因為該按鈕不起作用。 同樣,很有趣的是,長按“開始”按鈕時,它確實會突出顯示。
您只需在Interface Builder的Attributes Inspector中錯誤地配置了UIbarButtonItem / UIButton。
無論看起來多么令人困惑,都沒有必要浪費時間去研究這樣一個瑣碎的問題。 只需刪除該“開始”按鈕,然后將一個新按鈕再次放入工具欄即可。 沒有理由讓它的行為與上面的選項按鈕有所不同。
您應該將按鈕類型從UIButtonTypeCustom
更改為UIButtonTypeSystem
。
確保按鈕在IB中以.Default狀態初始化。
然后,確保.Highlighted狀態的文本顏色與.Default狀態的文本顏色不同。
啟用:顯示觸摸高亮顯示以進行測試。
沒有內置的方法,但是我可以想到一些自定義方法:
將按鈕綁定到目標方法,該方法將切換按鈕打算切換的內容,然后相應地更改按鈕的image屬性。 您可以使用2張圖像,一張用於所選狀態,一張用於默認狀態。
創建您自己的UIBarButtonItem子類,如下所示:
@interface CustomBarButtonItem : UIBarButtonItem { BOOL _state; UIImage * selectedImage; UIImage * defaultImage; } - (BOOL)toggleState; @property (nonatomic, retain) UIImage * selectedImage; @property (nonatomic, retain) UIImage * defaultImage; @end @implementation CustomBarButtonItem - (BOOL)toggleState { if (_state) { // Switch to Off state self.image = defaultImage; } else { // Switch to On state self.image = selectedImage; } return _state = !_state; } @end
工具欄設置為半透明嗎? 我懷疑您的導航欄是,工具欄不是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.