0

に触れるとtouchesBeganメソッドを呼び出します。ウィンドウを上からアニメーション化して表示します。もう一度タッチすると、そのメソッドがアニメーション化され、既に表示されているウィンドウが再び表示されるため、そのメソッドが再度呼び出されることは望ましくありません。どうすればいいですか?何か助けはありますか?いろいろ調べてみましたが、正確な答えは見つかりませんでした。[self animateWindow];UILabelUILabel[self animateWindow];

4

1 に答える 1

3

フラグとして使用する BOOL であるインスタンス変数を作成するだけです。

@property (assign, monatomic) BOOL hasAnimated;

- (void) touchesBegan...
{
    if (!self.hasAnimated) {
        [self animateWindow];
        self.hasAnimated = YES;
    }
}

コメントの拡張された説明に基づいて、どのラベルが実際にタッチされているかをチェックするロジックをさらに追加する必要があります。より良い解決策は、各ラベルでジェスチャ認識機能を使用することです。次に、ジェスチャ認識エンジンのビューに直接アクセスして、それがどのラベルであったかを確認し (おそらく を使用tag)、現在の状態に応じてジェスチャを追加および削除できます (一部のラベルのみがタッチに応答し、表示されるはずです)。または非表示)。

于 2013-05-18T09:47:53.000 に答える