1

複数の子コントロールを含む NSView があります。[childControl setHidden:TRUE] を呼び出すことができることはわかっていますが、子コントロールのメッセージ「drawRect:」をブロックできるかどうか疑問に思っていました。

NSView で [super drawRect:NSZeroRect] を呼び出さなくても、子コントロールには影響しないことに気付きました。私の質問は、子コントロールの drawRect メッセージを呼び出すのは誰ですか? そして、それをブロックする方法があれば。

ありがとう、ホセ。

4

1 に答える 1

0

コントロールが視覚的に反応するたびに、ビューを再度描画します。このような問題を本当に解決したい場合は、各コントロールに対してサブクラスを作成し、次のようなコードを追加できます。

-(void)drawRect:(NSRect)rect {
if (!self.blocked) {
[super drawRect:rect];
}
}

プロパティ "blocked" はブール値で、ブロックする場合は YES または NO に設定する必要があります。注: コントロール サブクラスを完全に非表示にするには、最初に描画する前にコントロール サブクラスをブロックする必要があります。

于 2011-02-23T20:54:16.860 に答える