1

特定のポイントの後、別の機能が実行された後にのみ起動できるようにしたいビューにタップジェスチャがあります。私の解決策は、タップ ジェスチャのアウトレットを作成し、必要に応じて関数設定を呼び出すことでしEnabledた。コードは次のようになります。2 番目の関数はタップ ジェスチャです。TRUEFALSE

- (IBAction)butt:(id)sender
{
    if(game == FALSE)
    {
        tapges.enabled = FALSE;
        int sec;
        sec = arc4random() % 5;
        if(sec == 0){sec++;}
        sleep(sec);
        tapges.enabled = TRUE;
        game = TRUE;
        gun.hidden = FALSE;
        start = [[NSDate date] timeIntervalSince1970];
    }



}


- (IBAction)tap:(id)sender
{
    if(game == TRUE)
    {
        end = [[NSDate date] timeIntervalSince1970];
        double total = end - start;
        NSString *myString = [NSString stringWithFormat:@"%lf", total];
        ss.text = myString;
        game = FALSE;
        gun.hidden = TRUE;
        tapges.enabled = FALSE;
    }
}

しかし、うまくいかないようです。最初の関数が設定された後でも、tapges.enabled = FALSE到達する前にタップするとtapges.enabled = TRUE、バット関数の実行後に実行するためにタップ関数がキューに入れられます。

4

1 に答える 1

1

UIGestureRecognizerDelegateメソッドを使用して UIGestureRecognizer が起動しないようにする (または起動する前に別の関数を呼び出す)方法gestureRecognizerShouldBeginはありますが、問題はもっと論理的な問題だと思います。

あなたの仕事を完全に理解しているかどうかはわかりませんが、次のようなより単純なものはありません:

- (IBAction)butt:(id)sender
{
    if(game == FALSE)
    {
     [self callOtherMethod];
    }
}

または

- (IBAction)butt:(id)sender
{
    if(game == FALSE)
    {
     //do set up
    } else {
     // do other setup
    }
}
于 2012-09-04T19:37:33.707 に答える