2012-03-25 12 views
1

私はハイパーリンクをエミュレートするカスタムNSTextFieldの基本ココアアプリを持っています。別のウィンドウに変更した後、カスタムNSCursorが失われる

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

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

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

問題:ブラウザーが "ポインティングハンド"を開くと、カーソルが通常の矢印カーソルにリセットされます(一番上のウィンドウがSafariになっているため)。しかし、私が自分のアプリケーションに戻って自分のカスタムハイパーリンクのラベルの上にカーソルを移動すると、カーソルは "指差しの手"に変わらない。

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

私はコールでカーソルrectを無効にしようとしましたが、動作しませんでした。

答えて

0

カーソルを追加する前にリセット行を追加してください。ただし、ドキュメントの直接呼び出しでは推奨されません。 または、ウィンドウにその操作を依頼することができます。

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

次のコードは、我々のアプリのいずれかで使用されている、それは非常にうまく機能:

- (void) resetCursorRects 
{ 
    [super resetCursorRects]; 
    [self addCursorRect: [self bounds] cursor: [NSCursor  openHandCursor]]; 
} 
関連する問題