以编程方式通过 uibutton 删除 uiview

发布于 2024-12-25 04:56:09 字数 2060 浏览 1 评论 0原文

我被困在如何通过用户单击 uibutton 来删除 uiview,uibutton 在场景加载后立即加载。 uibutton 也没有得到响应。 我应该如何设置?请帮忙,非常感谢。

- (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];

    UIButton *removeSticker = [UIButton buttonWithType:UIButtonTypeCustom];
    removeSticker.frame = CGRectMake(0, 0, 200, 100);
    [removeSticker setImage:[UIImage imageNamed:@"cancel-disabled.png"] forState:UIControlStateNormal];
    [removeSticker addTarget:holderView action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [holderView addSubview: removeSticker];

    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];

    [parentPreviewView addSubview:holderView];
}

- (void) buttonClicked: (id)sender
{
    [self.view removeFromSuperview];
}

I'm stuck at how to remove the uiview by user clicking the uibutton, the uibutton load at once the scene is loaded. The uibutton isn't getting response as well.
How should I set it up? Please help, thanks a lot.

- (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];

    UIButton *removeSticker = [UIButton buttonWithType:UIButtonTypeCustom];
    removeSticker.frame = CGRectMake(0, 0, 200, 100);
    [removeSticker setImage:[UIImage imageNamed:@"cancel-disabled.png"] forState:UIControlStateNormal];
    [removeSticker addTarget:holderView action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [holderView addSubview: removeSticker];

    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];

    [parentPreviewView addSubview:holderView];
}

- (void) buttonClicked: (id)sender
{
    [self.view removeFromSuperview];
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷爱 2025-01-01 04:56:09

将目标从 holderView 更改为 self:

[removeSticker addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

并将删除视图的代码更改为以下内容:

[holderView removeFromSuperview];

Change the target from holderView to self:

[removeSticker addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

and change the code that removes the view to the following:

[holderView removeFromSuperview];
虐人心 2025-01-01 04:56:09

使用以下技术。指定视图中每个控件的标签。

假设我将标签指定为 100,那么您可以从这个“标签”属性中受益。然后

 UIButtom *buttonToRemove=(UIButton*)[self.view   viewWithTag:100];

现在要删除它(按钮),请使用它

[buttonToRemove removeFromSuperview];

Use the following technique.Specify tag of every control that you have at your View.Then you can get benefit from this "tag" property

suppose i specified tag as 100. Then

 UIButtom *buttonToRemove=(UIButton*)[self.view   viewWithTag:100];

now to remove it(Buttons) use this

[buttonToRemove removeFromSuperview];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文