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
上。 UIImageView
的 userInteractionEnabled
默认设置为 NO。只需更改 boxInContainer.userInteractionEnabled = YES;
按钮即可使用!
哦,如果boxInContainer
是container
的子视图,那么你还必须设置container.userInteractionEnabled = YES;
【讨论】:
有人可以投票给 Guntis Treulands 的答案吗,它有效。谢谢甘蒂斯。用户交互是关键,现在在我的 xcode 中一切都很好。【参考方案2】:我认为,您的父容器视图超出了他的 superView 的范围。
要检查这一点,请尝试将 clipToBounds
属性设置为 YES
以获得父容器视图的超级视图,然后看看,您的按钮是否仍然可见?
【讨论】:
以上是关于UIButton不可触碰的主要内容,如果未能解决你的问题,请参考以下文章