我正在嘗試創建一個使用嵌入式NSButtonCell對象的自定義範圍欄。但是,當鼠標懸停時,我無法繪製擋板。我可以通過創建跟蹤區域並在鼠標進入時將showsBorderOnlyWhileMouseInside設置爲NO以及在向外移動時將YES設置爲YES來實現它,但這對我來說就像是一種黑客攻擊,特別是因爲NSButtonCell會自行執行跟蹤。在自定義控件中嵌入多個NSButtonCell
如果我使用控件的setCell方法,按鈕單元格將調用控件的addTrackingRect:owner:userData:assumeInside:並設置自己的跟蹤以在鼠標懸停時繪製擋板。但是,如果我想在同一個控件中使用多個按鈕單元格,我嘗試使用按鈕單元格的setControlView方法將每個單元格的controlView設置爲自定義控件,但它不會提示單元格設置跟蹤區域,例如setCell。
該技術必須是可能的,因爲NSMatrix做到了這一點,但在閱讀了每個可用的API和論壇之後,我還沒有找到一種方法來啓動NSButtonCell的跟蹤行爲,而不使用其控件的setCell方法。我的前額從桌面上跳動而來 - 血淋淋的 - 幫助將不勝感激。
謝謝,德克 - 我完全同意。我認爲文檔對NSCell的讚譽讓我對使用按鈕感到內疚。我認爲我會追趕鼠洞一段時間,但似乎沒有一個令人滿意的解決方案來實現這一點。 我試過updateTrackingAreaWithFrame:inView:方法,但它沒有做到這一點。當Cocoa用NSButton做這件事時看着堆棧顯示了一堆私有API傳遞,所以它看起來不像我們自己想做的那樣。 – 2009-04-20 00:55:31