2012-01-06 20 views
0

我被困在顯示uibutton * removeSticker,請幫忙。uibutton只顯示在新添加的uiview中

- (void)viewWillAppear:(BOOL)animated { 

UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, _imagePicker.selectedImage.size.width, _imagePicker.selectedImage.size.height)]; 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:[holderView frame]]; 
[imageView setImage:_imagePicker.selectedImage]; 
[holderView addSubview:imageView]; 

removeSticker = [UIButton buttonWithType:UIButtonTypeCustom]; 
removeSticker.frame = CGRectMake(0, 0, 32, 32); 
[removeSticker setImage:[UIImage imageNamed:@"cancel-disabled.png"] forState:UIControlStateNormal]; 
[removeSticker addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown]; 
[holderView addSubview: removeSticker]; 
[removeSticker setHidden: YES]; 

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)]; 
[pinchRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:pinchRecognizer]; 

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
[rotationRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:rotationRecognizer]; 

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; 
[panRecognizer setMinimumNumberOfTouches:1]; 
[panRecognizer setMaximumNumberOfTouches:1]; 
[panRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:panRecognizer]; 

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)]; 
[tapRecognizer setNumberOfTapsRequired:1]; 
[tapRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:tapRecognizer]; 

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)]; 
[longPressRecognizer setDelegate:self]; 
[holderView addGestureRecognizer:longPressRecognizer]; 

[stickerView addSubview:holderView]; 

} 

- (void)buttonClicked:(id)sender{ 
UIView *holderView = [(UIButton *)sender superview]; [holderView removeFromSuperview]; 
} 

的UIButton的* removeSticker只出現在最新添加的UIView * holderView,如果我想編輯以前添加一次,發生什麼。請幫助,非常感謝。

-(void)longPress:(id)sender { 
[removeSticker setHidden:NO]; 
} 

請查看附件截圖:http://i.stack.imgur.com/moMOj.png

對於上面的截圖中,瓶子和西瓜是*holderView。 我先添加了瓶子,然後添加了西瓜,但是當我點擊瓶子時,[removeSticker setHidden:NO];顯示在西瓜而不是瓶子裏。

[removeSticker setHidden:NO];只顯示在最新添加的*holderView

+0

你是什麼意思「只出現在最新添加的uiview * holderView」上?你能解釋更多嗎? – Canopus 2012-01-06 14:18:04

+0

@Canopus我已經更新了我的問題,非常感謝。 – zeropt7 2012-01-06 14:45:09

回答

0

Apple's documentation

「A視圖可以有在同一時間只有一個上海華」。

因此,如果您將視圖添加爲另一個視圖的子視圖,則子視圖將從其先前的視圖中移除並添加到新視圖中。 (請參閱addSubview方法的文檔)。 (考慮考慮爲什麼UIView只有一個類型爲UIView * superview的@property,而不是名爲superviews的NSArray [複數形式])。

編輯:如果你真的想在多個superviews多個視圖,你必須創建你的UIView的多個實例和多個實例添加到各種superviews。您還需要照顧相應的UIView實例,因此您可以將它們添加到NSArray並使用NSDictionary管理該aeray。

+0

謝謝澄清,那麼我該如何解決這個問題呢? – zeropt7 2012-01-06 14:53:23

相關問題