0

ここでは、クリック時に imageView を移動するコードを記述します。最初のクリックで上に移動したいのですが、もう一度クリックすると元に戻ります。これが私のコードです:

-(void)gdown
{
if (penview.center.y > 428) penview.center = CGPointMake(penview.center.x, penview.center.y -5);
if(penview.center.x ==428)
{
    [movtimer invalidate];
}
}
-(void)buttonmover
{
movtimer=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdown) userInfo:nil repeats:YES];
if(movtimer==nil)
{
    movtimer=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdown) userInfo:nil repeats:YES];
}
}
-(void)gdup
{
if (penview.center.y < 480) penview.center = CGPointMake(penview.center.x, penview.center.y +5);
if(penview.center.y ==480)
{
    [movtimers invalidate];
}
}
-(void)buttonmovup
{
movtimers=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdup) userInfo:nil repeats:YES];
if(movtimers==nil)
{
    movtimers=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdup) userInfo:nil repeats:YES];
}
}

クリック操作を実行するメソッド:

  -(IBAction)popupview:(id)sender
  {
   UIButton *button = sender;
   if(button.selected) //
   {
     [self buttonmover];//gooin up
    button.selected = false;
  }
   else
  {
  [self buttonmovup];//button goin down
    button.selected = true;
  }

  }

動いていない。クリックすると画像ビューが揺れます。このメソッドにどのような変更を加える必要がありますか?

4

3 に答える 3

1

あなたのelse partコードが実行されているとは思いません。ボタンがタップされたときに選択プロパティが常にtrueになるのと同じように、クラスに含める必要maintainがあります。flag

于 2012-11-19T05:37:04.870 に答える
0

あなたのコードは正しいです。次の変更のみを行ってください

movtimers=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdown) userInfo:nil repeats:NO];

タイマーセットごとに、YESではなくNOに繰り返します

于 2012-11-19T05:57:43.710 に答える
0

あなたのコードは正しいです。次の変更のみを行ってください

movtimers=[NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(gdown) userInfo:nil repeats:NO];

タイマーセットごとに、YESではなくNOに繰り返します

アニメーションを表示したい場合は、ifステートメントを次のように変更します

//in gdown
if(penview.center.y <=428)
    {
        [movtimers invalidate];
    }
//in gup
if(penview.center.y >=480)
    {
        [movtimers invalidate];
    }
于 2012-11-19T07:32:22.383 に答える