簡體   English   中英

選中時導航欄中的UIBarButtonItem突出顯示,但工具欄中的UIBarButtonItem未選中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM