UIImageView作为按钮

use*_*092 24 iphone cocoa objective-c

我试图让UIImageView接受动作并在每次点击UIImageVie时触发它们,但是我很难让它工作,请帮帮我

但这就是我正在做的事情:

[View setUserInteractionEnabled:YES];

[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];


- (void) myAction:(id)sender
{
    NSLog(@"It works!");
}
Run Code Online (Sandbox Code Playgroud)

The*_*ger 73

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];
}
Run Code Online (Sandbox Code Playgroud)

然后像这样调用你的手势方法:

-(void)singleTapping:(UIGestureRecognizer *)recognizer {
    NSLog(@"image clicked");
}
Run Code Online (Sandbox Code Playgroud)

迅速

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")
}
Run Code Online (Sandbox Code Playgroud)


Dru*_*erB 10

UIImageView不是控件,您不能为其添加控件事件的目标.你有几个选择:

将一种无形的UIButtonUIImageView和你的目标补充.您可以将按钮的样式设置为自定义,将其文本(和图像)设置为空,以使其不可见.

只使用一个UIButton.您可以为其添加背景图像.

添加UITapGestureRecognizer到图像视图并实现它的触摸处理程序方法.

子类UIImageView并覆盖触摸处理方法,以执行您需要执行的操作.


小智 8

您所要做的就是将Tap Gesture Recognizer拖到imageView(在Storyboard中)并在Attributes Inspector上启用User Interaction.如果要将图像用作指向另一个视图控制器的链接,只需将视图控制器底部的Tap Gesture Recognizer图标控制拖动到目标视图控制器.