Пользовательский NSCursor теряется после перехода в другое окно - PullRequest
1 голос
/ 25 марта 2012

У меня есть базовое приложение Cocoa с пользовательским NSTextField, который эмулирует гиперссылку.

Я использую следующий код для установки пользовательского курсора в реализации текстового поля:

- (void) resetCursorRects {
    [self addCursorRect: self.bounds cursor: [NSCursor pointingHandCursor]];
}

Я также переписал mouseUp: и выполняю действие при нажатии на ярлык.В моем случае я открываю URL через NSWorkspace.

Проблема: когда браузер открывает курсор «указывающей руки», он сбрасывается до обычного курсора со стрелкой (поскольку самое верхнее окно теперь Safari),Однако, когда я возвращаюсь в свое приложение и перемещаю курсор над моей пользовательской меткой гиперссылки, курсор не меняется на «указывающую руку».

Только после изменения размера окна (и сброса значений курсора)курсор снова работает.

Я пытался сделать недействительным курсор в прямоугольнике при вызове mouseUp:, но это не сработало.

1 Ответ

0 голосов
/ 21 апреля 2015

Пожалуйста, добавьте строку сброса перед добавлением курсора, хотя это не рекомендуется при прямом вызове документом. Или вы можете попросить окно сделать это.

[self resetCursorRects];
...
[fatherWindow invalidateCursorRectsForView:self];
...
[self addCursorRect:[self bounds] cursor:[NSCursor pointingHandCursor]];

Следующий код используется в одном из наших приложений и работает очень хорошо:

- (void) resetCursorRects
{
    [super resetCursorRects];
    [self addCursorRect: [self bounds] cursor: [NSCursor     openHandCursor]];
}
...