UIButton不可触碰

Posted

技术标签:

【中文标题】UIButton不可触碰【英文标题】:UIButton untouchable 【发布时间】:2014-06-30 19:44:34 【问题描述】:

我有一个 NSDictionary,它包含一组对象,这些对象将在一个数组中用于根据需要创建多个对象。我在图片的右上角有一个删除按钮,由于某种原因,我无法单击它。我会写出来的……

-(void)addItemsToSomething:(NSMutableArray*)array


    for (NSDictionary *item in array)  

    UIImageView *container....

    UIImageView *boxInContainer....

    UIButton *delete = [UIButton new];
    delete.frame = CGRectMake(70, -4, 24, 26);
    delete.userInteractionEnabled = YES;
    [delete setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
    [delete addTarget:self action:@selector(delete:) forControlEvents:UIControlEventTouchUpInside];
    [boxInContainer addSubview:delete];

    some math....

more math


-(void)delete:(id)sender

    NSLog(@"Do I work");

NSLog 永远不会显示在日志中,按钮阴影也不会显示它已被触摸。我什至将 userInteractionEnabled 设置为 YES 只是为了尝试覆盖另一个基地,但按钮仍然盯着我的脸,不会点击。谢谢您的帮助。

这也都放在滚动视图上,忘了那部分。

【问题讨论】:

在哪里添加按钮到视图? 魔鬼在细节中。发布创建按钮、添加目标并将其添加到视图的实际代码。此外,即使您在代码中添加目标/动作,您也可以在不将动作方法设为 IBAction 的情况下逃脱,但您仍应将其设为 IBAction,以记录其用途。 检查“删除”按钮框架。您可以有一个零大小的框架,但该按钮仍然可见,因为它的子视图/子层没有被剪裁。显然,如果它的帧大小为零或非常小,则命中测试将失败。或者更好:向我们展示您用于创建按钮的代码。 这类问题通常是由我在这里讨论的那种事情引起的:***.com/a/22188740/341994 听起来按钮顶部有东西,请仔细检查 XCode 故事板中的视图层次结构 【参考方案1】:

问题是你把它放在UIImageView 上。 UIImageViewuserInteractionEnabled 默认设置为 NO。只需更改 boxInContainer.userInteractionEnabled = YES; 按钮即可使用!

哦,如果boxInContainercontainer 的子视图,那么你还必须设置container.userInteractionEnabled = YES;

【讨论】:

有人可以投票给 Guntis Treulands 的答案吗,它有效。谢谢甘蒂斯。用户交互是关键,现在在我的 xcode 中一切都很好。【参考方案2】:

我认为,您的父容器视图超出了他的 superView 的范围。 要检查这一点,请尝试将 clipToBounds 属性设置为 YES 以获得父容器视图的超级视图,然后看看,您的按钮是否仍然可见?

【讨论】:

以上是关于UIButton不可触碰的主要内容,如果未能解决你的问题,请参考以下文章

UIView中的UIButton不可点击

添加UITabbar时UIButton不可点击

UIButton 在 ScrollView 上不可点击

UIButton 在第一次点击后不可点击

UItableView Cell上的UIbutton不可点击

从类实现时 UIButton 不可点击