1

ここで実行可能な最小限の例を探しています。私は何日もグーグルで検索して読んでいますが、最新のリソースが1つも見つかりません。

私の NSControl は正常に動作しますが、追加するとすぐに

+ (Class)cellClass {
    return [MYCustomCell class];
}

それに、この出力が得られ、ウィンドウが適切に描画されなくなります

<Error>: kCGErrorFailure: CGSShapeWindow
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_NXPlaceWindow: error setting window shape (1000)
<Error>: kCGErrorFailure: CGSShapeWindow
_NSShapeRoundedWindowWithWeighting: error setting window shape (1000)

この件に関して見つけたものはすべて (Apple のドキュメントを含めて) 読みましたが、適切な実装に至るにはすべてが漠然としているように思えます。誰かが私を正しい方向に向けることができれば、本当に感謝しています(適切なコード例または記事)。

4

1 に答える 1

4

私はついに答えを見つけたと信じています。

-cellSize メソッドは、NSCell/NSActionCell サブクラスでオーバーライドする必要があります。大量のスタック トレースを行った後、オーバーライドされていない場合、このメソッドがセル サイズとして (40000, 40000) を返し、これまでに見たサイズ変更エラーが発生することがわかりました。NSActionCell サブクラスには、セルが NSControl の描画領域全体を占有する必要がある特別なニーズがあるため、次のように単純に使用しました。

- (NSSize)cellSize {
    return self.controlView.bounds.size;
}

これがあなたの状況に役立つことを願っています。

于 2012-08-31T17:21:02.133 に答える