我想在点击按钮时删除该对象,但它仅适用于第一个视图,其他视图不会被删除。
请帮助我,
这是我的代码
self.frame = CGRectMake(0, 0, 1024, 768);
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
deleteButton.frame = CGRectMake(0, 0, 100, 100);
[deleteButton setTitle:@"fuck" forState:UIControlStateNormal];
[deleteButton addTarget:self action:@selector(removeViews) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:deleteButton];
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(100, 200, 400, 100)];
[scrollView setScrollEnabled:YES];
scrollView.pagingEnabled = YES;
[scrollView setDelegate:self];
scrollView.backgroundColor = [UIColor brownColor];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleDefault]; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.contentMode = UIViewContentModeScaleToFill;
[scrollView setContentSize:CGSizeMake(1000,100)];
[self addSubview:scrollView];
[self setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.8]];
circleView = [[UIView alloc] initWithFrame:CGRectMake(100,5,90,90)];
circleView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
//circleView.layer.borderColor = [[UIColor blackColor] CGColor];
//circleView.layer.borderWidth = 4;
UILabel* circleIndex = [[UILabel alloc] init];
circleIndex.frame = CGRectMake(30, 25, 40, 40);
[circleIndex setFont:[UIFont fontWithName:@"Arial-BoldMT" size:40]];
[circleIndex setText:@"A"];
[circleView addSubview:circleIndex];
circleView2 = [[UIView alloc] initWithFrame:CGRectMake(100+100,5,90,90)];
circleView2.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView3 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100,5,90,90)];
circleView3.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView4 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100,5,90,90)];
circleView4.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView5 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100+100,5,90,90)];
circleView5.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
circleView6 = [[UIView alloc] initWithFrame:CGRectMake(100+100+100+100+100+100,5,90,90)];
circleView6.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:1];
[scrollView addSubview:circleView];
[scrollView addSubview:circleView2];
[scrollView addSubview:circleView3];
[scrollView addSubview:circleView4];
[scrollView addSubview:circleView5];
[scrollView addSubview:circleView6];
exitView = [[UIView alloc] initWithFrame:CGRectMake(70,-5,30,30)];
exitView.layer.cornerRadius = 15;
exitView.backgroundColor = [UIColor redColor];
exitView.layer.borderColor = [[UIColor whiteColor] CGColor];
exitView.layer.borderWidth = 2;
[circleView addSubview:exitView];
UIView *exitLabel = [[UIView alloc] initWithFrame:CGRectMake(8,13,15,3)];
exitLabel.backgroundColor = [UIColor clearColor];
exitLabel.layer.borderColor = [[UIColor whiteColor] CGColor];
exitLabel.layer.borderWidth = 2;
[exitView addSubview:exitLabel];
UILongPressGestureRecognizer *longPress =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleLongPress:)];
[circleView addGestureRecognizer:longPress];
UITapGestureRecognizer *singlePress =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSinglePress:)];
[exitView addGestureRecognizer:singlePress];
//[longPress release];
UITapGestureRecognizer *singlePress2 =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(singlePress:)];
[circleView2 addGestureRecognizer:singlePress2];
[exitView setHidden:YES];
//[circleView bringSubviewToFront:exitView];
//[exitView setUserInteractionEnabled:YES];
}
return self;
}
-(void)removeViews{
[self.circleView3 removeFromSuperview];
[scrollView setNeedsDisplay];
[self setNeedsDisplay];
}
我可以删除唯一的circleView,而不是其他的(circleView2,circleView3等)
答案 0 :(得分:0)
尝试以下操作:将每个圈视图添加到滚动视图中,并在其上方添加标记和按钮,以删除此特定视图。
self.frame = CGRectMake(0, 0, 1024, 768);
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(100, 200, 400, 100)];
[scrollView setScrollEnabled:YES];
scrollView.pagingEnabled = YES;
[scrollView setDelegate:self];
scrollView.backgroundColor = [UIColor brownColor];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleDefault]; scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
scrollView.contentMode = UIViewContentModeScaleToFill;
[scrollView setContentSize:CGSizeMake(1000,100)];
//number of circleviews you want to add to your scrollview
int countViews = 6;
//for each number add one circleview to your scrollview. for each circleview add a button, to remove the view from the scrollview
for(int i=0;i<countViews;i++){
UILabel* circleIndex = [[UILabel alloc] init];
circleIndex.frame = CGRectMake(30, 25, 40, 40);
[circleIndex setFont:[UIFont fontWithName:@"Arial-BoldMT" size:40]];
[circleIndex setText:@"A"];
[circleView addSubview:circleIndex];
UIView *circleView = [[UIView alloc] initWithFrame:CGRectMake(100+(i*100),5,90,90)];
circleView.backgroundColor = [UIColor whiteColor];
circleView.tag = i;
[scrollView addSubview:circleView];
UIButton *deleteButton = [UIButton buttonWithType:UIButtonTypeCustom];
[deleteButton setBackgroundColor:[UIColor clearColor]];
deleteButton.frame = circleView.frame;
deleteButton.tag = 100+i;
[deleteButton addTarget:self action:@selector(removeViews:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:deleteButton];
}
[self addSubview:scrollView];
[self setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.8]];
exitView = [[UIView alloc] initWithFrame:CGRectMake(70,-5,30,30)];
exitView.layer.cornerRadius = 15;
exitView.backgroundColor = [UIColor redColor];
exitView.layer.borderColor = [[UIColor whiteColor] CGColor];
exitView.layer.borderWidth = 2;
[circleView addSubview:exitView];
UIView *exitLabel = [[UIView alloc] initWithFrame:CGRectMake(8,13,15,3)];
exitLabel.backgroundColor = [UIColor clearColor];
exitLabel.layer.borderColor = [[UIColor whiteColor] CGColor];
exitLabel.layer.borderWidth = 2;
[exitView addSubview:exitLabel];
UILongPressGestureRecognizer *longPress =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleLongPress:)];
[circleView addGestureRecognizer:longPress];
UITapGestureRecognizer *singlePress =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSinglePress:)];
[exitView addGestureRecognizer:singlePress];
//[longPress release];
UITapGestureRecognizer *singlePress2 =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(singlePress:)];
[circleView2 addGestureRecognizer:singlePress2];
[exitView setHidden:YES];
}
- (IBAction)removeViews:(id)sender{
[[scrollView viewWithTag:[sender tag]] removeFromSuperview];
[[scrollView viewWithTag:([sender tag]-100)] removeFromSuperview];
}