1
我有一個完全自定義的NSControl
及其完全自定義的NSCell
。 現在我想實現一些鼠標交互。例如,當用戶點擊控制 我想要將控制狀態更改爲highlight
所以問題是:NSControl和NSCell:管理單元格狀態的方法
1)我在哪裏必須處理鼠標事件?在NSControl
或直接在NSCell
?
在我這個代碼在子類的NSCell工作的那一刻:
-(BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView{
[self setHighlighted:YES];
return YES;
}
-(void)stopTracking:(NSPoint)lastPoint at:(NSPoint)stopPoint inView:(NSView *)controlView mouseIsUp:(BOOL)flag{
[self setHighlighted:NO];
}
2)是NSCell
狀態由NSControl
自動管理?如果我將NSControl
stete設置爲highlight
,它將鏡像到NSCell
?
3)那麼啓用的屬性呢? 在我在的NSControl寫了這個代碼的時刻: 而這種代碼在的NSControl
-(void)setEnabled:(BOOL)flag{
[super setEnabled:flag];
[[self cell]setEnabled:flag];
[self updateCell:[self cell]];
}
你有沒有特別的建議與鼠標事件的工作與自定義的NSControl +的NSCell?
爲什麼我要修改跟蹤區? – MatterGoal
你根本不需要修改它。它只是一個乾淨的方法,因爲NSControl子類在鼠標進入/退出時自行檢測,因此它可以對其執行操作。 –
我需要模擬一個NSButton的行爲,所以我不需要知道什麼時候鼠標進入/退出我的控制。我只需要知道哪個是在自定義控件上管理鼠標事件的正確方法。 目前我正試圖在NSCell級別進行管理。你認爲這不是一個好主意嗎? – MatterGoal