1

NSTextFieldハイパーリンクをエミュレートするカスタムの基本的なCocoaアプリがあります。

次のコードを使用して、テキストフィールドの実装にカスタムカーソルを設定します。

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

mouseUp:また、ラベルがクリックされたときに上書きしてアクションを実行します。私の場合、を介してURLを開いていますNSWorkspace

問題:ブラウザを開くと、「ポインティングハンド」カーソルが通常の矢印カーソルにリセットされます(一番上のウィンドウがSafariになっているため)。ただし、アプリに戻ってカスタムハイパーリンクラベルの上にカーソルを移動しても、カーソルは「ポインティングハンド」に変わりません。

ウィンドウのサイズを変更した後(およびカーソルの長方形がリセットされた後)にのみ、カーソルが再び機能します。

呼び出しでカーソルrectを無効にしようとしましたmouseUp:が、機能しませんでした。

4

1 に答える 1

0

ドキュメントでは直接呼び出しでは推奨されていませんが、cursor rect を追加する前に reset の行を追加してください。または、窓口に依頼することもできます。

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

次のコードは、当社のアプリの 1 つで使用されており、非常にうまく機能します。

- (void) resetCursorRects
{
    [super resetCursorRects];
    [self addCursorRect: [self bounds] cursor: [NSCursor     openHandCursor]];
}
于 2015-04-20T21:11:32.967 に答える