Простейшее использование команды set NSCursor - PullRequest
1 голос
/ 05 августа 2011

Я пытаюсь получить пользовательский курсор для моего приложения OSX. Я читал об этом без успеха за последние несколько часов. Итак, я перешел к самому простому аспекту, просто установив текущий курсор в качестве курсора перекрестия, в проекте, в котором больше ничего нет.

Вот самая базовая настройка, которая не меняет курсора для меня. Используя XCode, я сделал новый проект Cocoa. Единственный фрагмент кода, который я написал, - это одна строка в следующей функции.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
        [[NSCursor crosshairCursor] set];
}

Это не меняет курсора, что, вероятно, означает, что я упускаю что-то чрезвычайно простое, но не могу понять, для моей жизни.

Я перепробовал много вариантов, используя метод NSCursor -push для изменения текущего курсора, и он не работает. Я также попытался поместить NSButton, а затем сделал, поскольку другой ответ подсказывает здесь (где кнопка имеет тип NSButton *):

[button addCursorRect:[button bounds] cursor:[NSCursor crosshairCursor]];

Я уже писал пару приложений для iPhone, но никогда не для Mac, но, похоже, это похоже. Я что-то упустил безнадежно глупо? Я также попытался поиграть с addCursorRect: cursor: метод, но я не уверен, что я сделал это правильно. Непонятно, какая функция должна вызывать ее и откуда.

Как только я выясню, как показать ЛЮБОЙ другой курсор, я хочу перейти к созданию своих собственных изображений для курсора.

Спасибо!

1 Ответ

1 голос
/ 05 августа 2011

Я не уверен, почему, но установка курсора в applicationDidFinishLaunching, похоже, не работает.(Я только что попробовал.) Но он будет работать, если вы сделаете это позже, например, в результате нажатия кнопки или, возможно, используете таймер, если вы хотите, чтобы это произошло при запуске.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(timer:) userInfo:nil repeats:NO];
}

-(void)timer:(id)foo
{
    [[NSCursor pointingHandCursor] set];
}
...