在我的视图中,我添加了imageView,但在删除后,此图像会保留在视图上,如何将其删除?
创建:
(void)handleTapHold:(UILongPressGestureRecognizer *)gestureRecognizer{
UIImageView *pinkIm = [[UIImageView alloc]initWithFrame:CGRectMake(self.roundView.frame.origin.x + 70, self.roundView.frame.origin.y - 70, 60, 60)];
[pinkIm setImage:[UIImage imageNamed:@"pink_print"]];
pinkIm.layer.cornerRadius = pinkIm.frame.size.height / 2;
pinkIm.layer.borderWidth = 3.0f;
pinkIm.layer.borderColor = [UIColor whiteColor].CGColor;
pinkIm.clipsToBounds = YES;
[self.view addSubview:pinkIm];
if (gestureRecognizer.state == UIGestureRecognizerStateEnded){
[pinkIm removeFromSuperview];
}
}
稍后用同样的方法我尝试删除但没有任何事情发生:
[pinkIm removeFromSuperview];
找到我的问题,一开始我不添加:
if (gestureRecognizer.state == UIGestureRecognizerStateBegan){
答案 0 :(得分:1)
可能是当你尝试删除它时,* pinkIm已经是零 - 你可以发布剩下的代码,以便我们可以确保指针pinkIm不是nil吗?
如果它是零,并且你无能为力,那么删除它的另一种方法是通过当前视图的孩子找到它。例如:
for(UIView *child in self.children){
if([child isKindOfClass: [UIImageView class]]){
[child removeFromSuperView];
break;}}
注意:如果您有多个图像视图,则上述操作无效。在这种情况下,您可能希望继续检查" child"的状态。确保你在谈论* pinkIm指向的内容。
请发布方法的其余代码!
答案 1 :(得分:0)
请确保您在主线程上触发该方法,请尝试以下操作:
if (gestureRecognizer.state == UIGestureRecognizerStateEnded){
dispatch_async(dispatch_get_main_queue(), { () -> Void in
[pinkIm removeFromSuperview];
})
}