Я использую версию BGHUDSegmentedCell для рисования сегментированного элемента в стиле HUD (NSSegmentedControl).Рисование «нажатого» состояния в пользовательском NSSegmentedCell
Однако я не вижу никакого способа нарисовать ячейку в «нажатом» состоянии, пока пользователь нажимает на сегмент (чтобы пользователь получал надлежащую обратную связь). По умолчанию NSSegmentedControl/Cell управляет этим, поэтому существует предположительно способ, хотя и является системным кодом, который знает, является ли он общедоступным.
подкласс переопределяет:
- (void)drawWithFrame:(NSRect)frame inView:(NSView *)view {
- (void)drawSegment:(NSInteger)segment inFrame:(NSRect)frame withView:(NSView *)view {
Есть ли способ в NSSegmentedCell, чтобы определить, что он рисует сегмент в «нажатом» состоянии, и таким образом отобразить его должным образом во время отслеживания?
К сожалению, нет. selectedSegment остается неизменным до тех пор, пока после отпускания кнопки и завершения отслеживания - я хочу, чтобы иметь возможность нарисовать нажатый сегмент во включенном состоянии при нажатии кнопки. drawWithFrame вызывается, но я не могу найти способ определить, какой сегмент отслеживается. –
Вы можете проверить отслеживание сегмента в этих трех делегатах rt: - (BOOL) startTrackingAt: (NSPoint) startPoint inView: (NSView *) controlView - (BOOL) continueTracking: (NSPoint) lastPoint at: (NSPoint) currentPoint inView :(NSView *) controlView - (void) stopTracking: (NSPoint) lastPoint at: (NSPoint) stopPoint inView: (NSView *) controlView mouseIsUp: (BOOL) флаг –
добавьте его в качестве ответа, и я объясню, почему это не так использование startTrackingAt и др. не работает. –