У меня есть полностью пользовательский 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