Iphone 单击获取UILabel的标记

Iphone 单击获取UILabel的标记,iphone,ios,objective-c,xcode,ipad,Iphone,Ios,Objective C,Xcode,Ipad,我动态创建UILabel,然后将它们的标记保存在NSMutableArray中。然后我有了一个方法,可以检测这些UILabel上的点击(click)。基本上,当动态生成的UILabel被单击时,我希望删除它而不删除其他标签。然而,在未来,我可能想做更多,然后只是删除。但现在,我觉得我在试图找到一种方法来做到这一点时陷入了死胡同。有什么想法吗 这是我的密码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup

我动态创建UILabel,然后将它们的标记保存在NSMutableArray中。然后我有了一个方法,可以检测这些UILabel上的点击(click)。基本上,当动态生成的UILabel被单击时,我希望删除它而不删除其他标签。然而,在未来,我可能想做更多,然后只是删除。但现在,我觉得我在试图找到一种方法来做到这一点时陷入了死胡同。有什么想法吗

这是我的密码:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// set corner radius
coverview.hidden=YES;
labeltextfield.hidden=YES;
textcreate.hidden=YES;


labeltags = [NSMutableArray  array];
labeltext = [NSMutableArray array];

}

-(IBAction)removeboard
{
[labeltextfield resignFirstResponder];
}

-(void)showtextcreator {
// Create bg cover
coverview.hidden=NO;
labeltextfield.hidden=NO;
textcreate.hidden=NO;

//Make sure creating screen is always on top
[self.view bringSubviewToFront:coverview];
[self.view bringSubviewToFront:labeltextfield];
[self.view bringSubviewToFront:textcreate];

}

-(void)createtext {    
NSInteger obj = [labeltags count] +1 ;
[labeltags addObject:[NSNumber numberWithInteger:0]];

int posx = arc4random() % 300 ;
int posy = arc4random() % 400 ;
int frame = arc4random() % 400 ;

NSString *txt = labeltextfield.text;
//  NSString *framename = (@"frame%i",frame);

[labeltext addObject:txt];

[labeltags addObject:[NSNumber numberWithInteger:0]];

CGRect labelframe = CGRectMake( posx, posy, 100, 30);
 label = [[UILabel alloc] initWithFrame: labelframe];
[label setText: [NSString stringWithFormat:@"%@", txt]];
[label setTextColor: [UIColor orangeColor]];
label.backgroundColor = [UIColor clearColor];
label.tag=obj;
[self.view addSubview: label];

label.userInteractionEnabled = YES;

UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc]
                                    initWithTarget:self
                                    action:@selector(labelDragged:)];
[label addGestureRecognizer:gesture];

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)];

[label addGestureRecognizer:recognizer];



coverview.hidden=YES;
labeltextfield.hidden=YES;
textcreate.hidden=YES;


}

- (void)labelDragged:(UIPanGestureRecognizer *)gesture
{
label = (UILabel *)gesture.view;
CGPoint translation = [gesture translationInView:label];

// move label
label.center = CGPointMake(label.center.x + translation.x,
                           label.center.y + translation.y);

// reset translation
[gesture setTranslation:CGPointZero inView:label];
}


- (void)tapAction {
    UILabel *labelnew = (UILabel *)[self.view viewWithTag:1];
    NSLog(@"Text is %@",labelnew.text);
}
详情:

1.修改
-(void)createtext
方法

2:为
UITapGestureRecognizer

3.在
-(void)点击操作:

4.获取点击的
ui标签

就这样

详情:

1.修改
-(void)createtext
方法

2:为
UITapGestureRecognizer

3.在
-(void)点击操作:

4.获取点击的
ui标签


就这样。

太棒了!我用removeFromSuperView,效果很好。非常感谢,太棒了!我用removeFromSuperView,效果很好。非常感谢你。
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
[label addGestureRecognizer:recognizer];

- (void)tapAction:(UITapGestureRecognizer *)tapGesture {
    UILabel *labelTapped = (UILabel *)tapGesture.view;
   //delete it using removeFromSuperView or do whatever you need with tapped label

}