我有一个 UIImageView 我想收到一个动作。我希望它像一个按钮。它不会设置图像,因此它将是不可见的,然后当点击时我希望它更改为图像。
我知道 IBActions 不适用于 UIImageView。我怎么能做到这一点?
此代码可能是您的解决方案。请尝试一下。
UIButton b=[UIButton buttonWithType:UIButtonTypeCustom];
[b setBackgroundImage:backgroundImage forState:UIControlStateNormal];
[b addTarget:own action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[own.view addSubview:b];
创建一个 UIButton,在 Interface Builder 中将按钮的类型设置为“自定义”,然后选择您的图像作为按钮的背景图像。将 IBAction 分配给按钮并使其在您的操作中不可见。
或者,
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:backgroundImage
forState:UIControlStateNormal];
[button addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button ];
如果你真的想使用 UIImageView 你必须设置myImageView.userInteractionEnabled = YES;
然后添加一个手势识别器:
UITapGestureRecognizer *myGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewTapped:)];
myGestureRecognizer.numberOfTouchesRequired = 1;
myGestureRecognizer.numberOfTapsRequired = 1;
[myImageView addGestureRecognizer:myGestureRecognizer];
否则,我建议将 UIButton 与背景图像一起使用。
解决方案:
将此添加到您的视图控制器:
func makeButton(imageView: UIImageView, onPressed: Selector) {
imageView.isUserInteractionEnabled = true
let gr = UITapGestureRecognizer()
gr.numberOfTapsRequired = 1
gr.numberOfTouchesRequired = 1
gr.addTarget(self, action: onPressed)
imageView.addGestureRecognizer(gr)
}
并使用以下方法调用它:
makeButton(myImageView, onPressed: self.buttonPressed)
为什么不像普通开发人员那样只使用 UIButton 并为其设置图像和/或使其可见和启用或不可见和禁用?
如果您的 UIButton 中没有图像,我认为您仍然可以点击该区域,然后您可以通过“ setImage:forState:
”为其分配图像。