2

OSX アプリケーション用のカスタム カーソルを取得しようとしています。過去数時間、成功せずにこれを行うことについて読んだことがあります。したがって、他に何もないプロジェクトで、現在のカーソルを十字カーソルとして設定するだけで、最も単純な側面に移動しました。

これは、カーソルを変更しない最も基本的なセットアップです。XCode を使用して、新しい Cocoa プロジェクトを作成しました。私が書いたコードは、次の関数の 1 行だけです。

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

これはカーソルを変更しません。おそらく、非常に基本的な何かが欠けていることを意味しますが、私の人生では理解できません。

NSCursor -push メソッドを使用して現在のカーソルを変更して、さまざまなバリエーションを試しましたが、機能しません。また、NSButtonを配置してから、別の回答がここで示唆するように実行してみました(ボタンのタイプはNSButton *です):

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

以前に iPhone 用のアプリをいくつか書いたことがありますが、Mac 用のアプリは作成したことがありませんが、かなり似ているようです。私は絶望的に愚かな何かを見逃していますか?addCursorRect:cursor: メソッドも試してみましたが、うまくできたかどうかわかりません。どの関数がそれをどこから呼び出すべきかは明確ではありませんでした。

別のカーソルを表示する方法を理解したら、カーソル用の独自の画像の作成に進みたいと思います。

ありがとう!

4

1 に答える 1

2

理由はわかりませんが、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];
}
于 2011-08-05T14:49:22.000 に答える