0

MainViewシングル ビュー アプリの場合、クラスを追加して のViewController.xibカスタム クラスを使用し、 でイベントMainViewをキャッチし、ドット (場所) を記録するようにしたのは、非常に奇妙です。touchesMovedViewController.m

次に、 のdrawRectMainView.mにドットを描きます。そのため、プログラムを実行すると、画面上に 1 つのドットが表示され、指が移動した場所に描画されます...

initWithCoderしかし、 に追加するとすぐにMainView.m、動作がまったく異なります。ドットを描画する前にビューのコンテンツがクリアされないようで、以前に描画されたすべてのドットが画面に残りますが、画面が頻繁に点滅します (新しい GPU を搭載した新しい iPad を使用しています)...そこにあるようですいくつかの「バッファ」があり、いくつかは古いドットのセットが異なり、別のバッファには古いドットの異なるセットがありました...指が画面から離れたとき、それはそれらのバッファの1つである可能性があります(異なるドットのセットを持つランダムバッファ) . (もう 1 つ: 画面の背景がすべて黒に変更されました。以前は、灰色または Interface Builder がビューに設定した色でした)。次のように追加すると、なぜinitWithCoderそのような効果が生じるのですか?

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super init];
    if (self) {

    }
    return self;
}
4

1 に答える 1

2

あなたのinitWithCoder:方法は間違っています。[super initWithCoder:aDecoder]単純な古いものではなく、呼び出す必要があります[super init]。そうしないと、xibファイルのすべての情報(再描画オプションと背景色を含む)が失わaDecoderれます。オブジェクトにはこのすべての情報が含まれているため、破棄します。

于 2012-04-22T06:14:27.037 に答える