0

ユーザーが最後に触れたラベルを知る方法と、その特定のラベルをビューから削除する方法を知りたいです。すべてのラベルのプロパティを変更する方法は知っていますが、最後に選択されたラベルを確認する方法がわかりません。

これは、ビューにラベルを追加する方法です。

myNewLabel.text =textField.text;
numberOfLabels++;
myNewLabel.tag=numberOfLabels;
[self.view addSubview:myNewLabel];
[shirtBackgroundView addSubview:myNewLabel];
[myNewLabel addGestureRecognizer:panGestureRecognizer];
[myNewLabel addGestureRecognizer:rotateGestureRecognizer];
[myNewLabel addGestureRecognizer:PinchGestureRecognizer];
myNewLabel.userInteractionEnabled=YES;
myNewLabel.backgroundColor=[UIColor clearColor]; 
[arrayForLabels addObject:myNewLabel];   

すべてのラベルの色を変更する方法は次のとおりです。

    for(int i=0;i<numberOfLabels;i++)
    {
        UILabel *tempLabel = [arrayForLabels objectAtIndex:i];
        tempLabel.textColor=[UIColor redColor];
    }



 -(void)labelMoved:(UIPanGestureRecognizer *)recognizer
{
    CGPoint translation = [recognizer translationInView:self.view];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];



    if (recognizer.state == UIGestureRecognizerStateEnded) {

        CGPoint velocity = [recognizer velocityInView:self.view];
        CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));
        CGFloat slideMult = magnitude / 200;
        NSLog(@"magnitude: %f, slideMult: %f", magnitude, slideMult);

        float slideFactor = 0.1 * slideMult; // Increase for more of a slide
        CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor),
                                         recognizer.view.center.y + (velocity.y * slideFactor));
        finalPoint.x = MIN(MAX(finalPoint.x, 0), self.view.bounds.size.width);
        finalPoint.y = MIN(MAX(finalPoint.y, 0), self.view.bounds.size.height);

        [UIView animateWithDuration:slideFactor*2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
            recognizer.view.center = finalPoint;
        } completion:nil];


    }

}

提案をありがとう...

4

2 に答える 2

1

UIlabelsタップをキャプチャするための検出の場合:

label.userInteractionEnabled = YES;
 UIGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecieved:)]; 
[label addGestureRecognizer:tap];
[tap release];

//タッチしたときに追加のラベルごとに繰り返します

-(void) tapRecieved:(UITapGestureRecognizer *)tap{  
      currentLabel = (UILabel *) tap.view;
        [currentLabel removeFromSuperview];
 }
于 2013-02-08T06:32:14.543 に答える
1

.hクラスのプロパティをUILabel*lastSelectedLabelとして宣言できます。とあなたのレコグナイザーで

-(void)labelMoved:(UIPanGestureRecognizer *)recognizer{
          if(lastSelectedLabel!=nil){
                [lastSelectedLabel removeFromSuperview];
                lastSelectedLabel=recognizer.view;

          }else
              lastSelectedLabel=recognizer.view;
}

上記はうまくいくはずだと思います。

ありがとう。

于 2013-02-08T06:28:49.123 に答える