2014-01-08 26 views
1

所以,我有這個鼠標輸入事件,如果我鼠標輸入trackingArea,將使可見的標籤。但是,根據輸入哪個trackingArea,我想將自定義字符串設置爲標籤。如何比較NSEvent的trackingArea以查看哪個trackingArea觸發了「theEvent」

主要問題是:我如何得到哪個trackingArea被輸入。

這是我的代碼:

-(void)mouseEntered:(NSEvent *)theEvent 
{ 
    if([theEvent trackingArea] isEqual: -- to my trackingArea --) 
    { 
     [self.label setStringValue:@"Test"]; 
    } 
} 

回答

0

聽起來像是Spaghetti code我開始..

即:在一個視圖中的東西是否被另一個視圖觸發檢查 - 我想你嘗試實施某種在線幫助系統,並在其中顯示一些文字以用於各種視圖/控件。在這種情況下,你可能很容易得到一個巨大的if-then-else塊和幾十個視圖來檢查。

在任何情況下,我會建議使用不同的方法,並在你的代碼擁抱loose coupling

一下怎麼樣,實際上擁有視圖跟蹤區域發送帶有字符串的通知就是了人其他顯示?

這種方式視圖不需要彼此瞭解,沒有實例變量設置爲指向對方等 - 只是一個有人發送和其他人會聽的通知。

清潔,可維護,易於擴展。

+1

不,這是相同觀點的一部分。我有兩個按鈕,每個按鈕都有自己的trackingArea,當我mouseEnter trackingArea時,我希望標籤顯示一些文本,具體取決於我使用哪個按鈕mouseEntered。 –

相關問題