我正在尝试让UIImageView接受操作并在每次单击UIImageVie时触发它们,但是我很难让它工作,请帮助我
但这是我正在做的:
[View setUserInteractionEnabled:YES];
[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
- (void) myAction:(id)sender
{
NSLog(@"It works!");
}
Objective-C
在您的viewDidLoad:
方法中,请编写以下内容:
-(void)viewDidLoad {
UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
[imageview setImage:[UIImage imageNamed:@"image.png"]];
[imageview setUserInteractionEnabled:YES];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
[singleTap setNumberOfTapsRequired:1];
[imageview addGestureRecognizer:singleTap];
[self.view addSubview:imageview];
}
然后像这样调用你的手势方法:
-(void)singleTapping:(UIGestureRecognizer *)recognizer {
NSLog(@"image clicked");
}
迅速
override func viewDidLoad() {
super.viewDidLoad()
let imageView: UIImageView = UIImageView(frame: CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0))
imageView.image = UIImage(named: "image.png")
imageView.isUserInteractionEnabled = true
let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.singleTapping(recognizer:)))
singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
self.view.addSubview(imageView)
}
@objc func singleTapping(recognizer: UIGestureRecognizer) {
print("image clicked")
}
UIImageView
不是控件,则无法向其添加控件事件的目标。您有以下几种选择:
在UIImageView
上放置一个看不见的UIButton
,并将您的目标添加到其中。您可以将按钮的样式设置为自定义,将其文本(和图像)设置为无,以使其不可见。
只用一个UIButton
。您可以向其添加背景图像。
将UITapGestureRecognizer
添加到图像视图并实现其触摸处理程序方法。
子类UIImageView
并重写触摸处理方法,以执行您需要执行的操作。
您所要做的就是将点击手势识别器拖到图像视图(在情节提要中)上,并在属性检查器上启用用户交互。如果要将图像用作指向另一个视图控制器的链接,只需按住 Control 键并拖动视图控制器底部的"点击手势识别器"图标到目标视图控制器即可。
UIImageView
不是UIControl
因此它没有addTarget:action:forControlEvents
方法作为其接口的一部分。您可以改用手势识别器。
我不是专业人士,但您可以使用按钮
UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
imageButton.frame = CGRectMake(0, 0, 200, 200);
[imageButton setImage:[UIImage imageNamed:@"Your_Image.png"] forState:UIControlStateNormal];
imageButton.adjustsImageWhenHighlighted = NO;
[imageButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imageButton];