我有一个简单的UIImageView
动画,我需要检测一下它。我添加了一个UIButton
,它是此UIImageView
的子视图。但是,点击它不起作用。我已经在添加到视图时测试了UIButton
本身,并且它可以工作,因此它不是导致问题的按钮。
以下是代码:
self.red = [[UIImageView alloc] initWithFrame:CGRectMake(50, 300, 85, 100)];
self.red.image = [UIImage imageNamed:@"red.png"];
[self.red setUserInteractionEnabled: YES];
[self.view addSubview: self.red];
[self.view bringSubviewToFront:self.red];
UIButton *redButton = [UIButton buttonWithType: UIButtonTypeCustom];
redButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);
[redButton addTarget: self action:@selector(correctButtonClick) forControlEvents: UIControlEventAllTouchEvents];
[redButton setUserInteractionEnabled:YES];
[self.red addSubview: redButton];
[self.red bringSubviewToFront:redButton];
我在这里做错了什么?
答案 0 :(得分:3)
而不是这一行,redButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);
试试这个
redButton.frame = CGRectMake(0,0, self.red.frame.size.width, self.red.frame.size.height);
编辑:此行[self.red bringSubviewToFront:redButton];
不需要..
答案 1 :(得分:3)
不使用UIButton
作为子视图,而是使用UITapGestureRecognizer
,例如:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(correctButtonClick)];
[self.red addGestureRecognizer:tap];
答案 2 :(得分:2)
你需要做的是反转你的实现,将UIButton添加到UIImageView不是一个好主意,而是以编程方式创建自定义样式的UIButton,并添加UIImageView作为其子视图,肯定会工作
编辑: 至于你当前的实现,你已经在UIImageView中添加了UIButton,所以你可能希望图像的每个部分都接受click事件,在这种情况下你的UIButton的x和y坐标将是0,0而不是red.x和red.y ,但宽度和高度是正确的
答案 3 :(得分:1)
只需做self.red.userInteractionEnabled = YES。
UIImageView默认使用userInteractionEnabled NO。
答案 4 :(得分:1)
自定义按钮没有用户界面。所以你不能选择它。 (您可以使用绑定按钮尝试它,或者将一些图像添加到按钮并将按钮alpha设置为0.1或其他)
@tkanzakic答案应该是正确的。 只需将TapGestureRecognizer添加到ImageView或将图像添加到按钮。
答案 5 :(得分:0)
不使用单独的imageview和Button,使用Button 中的imageview属性。这将解决您的所有问题,并使您免于编写额外的代码行。
UIButton *redButton = [UIButton buttonWithType: UIButtonTypeCustom];
redButton.imageView.image = [UIImage imageNamed:@“red.png”];
redButton.frame = CGRectMake(50, 300, 85, 100);
[redButton addTarget: self action:@selector(correctButtonClick) forControlEvents: UIControlEventAllTouchEvents];
[redButton setUserInteractionEnabled:YES];
[self.red addSubview: redButton];
答案 6 :(得分:0)
很简单,按钮没有响应,因为它的框架是错误的,所以它不在你想象的地方。基本上改变你的行:
redButton.frame = CGRectMake(self.red.frame.origin.x, self.red.frame.origin.y, self.red.frame.size.width, self.red.frame.size.height);
用这个:
redButton.frame = CGRectMake(self.red.bounds.origin.x, self.red.bounds.origin.y, self.red.frame.size.width, self.red.frame.size.height);