如何在故事板上制作UIImageView可点击(快速)

我是swift的新手(以及一般的Xcode开发),我想知道如何在故事板上创建一个可点击的ImageView。 我正在尝试做的是当它点击时,它显示另一个视图控制器。

您可以为此添加tapGesture。 这是代码:

class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: "imageTapped:") // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.userInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if let imageView = gesture.view as? UIImageView { println("Image Tapped") //Here you can initiate your new ViewController } } } 

Swift 3.0

 class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(gesture:))) // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.isUserInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if (gesture.view as? UIImageView) != nil { print("Image Tapped") //Here you can initiate your new ViewController } } } 

您可以更轻松地完成这项工作,并且可以通过Storyboard点击图像,而无需编码

  • 首先,您需要将UITapGestureRecognizer拖到Storyboard中的UIImageView上。
  • 然后使用@IBAction func imageClicked(_ sender: Any) {}创建要在代码中运行的IBAction @IBAction func imageClicked(_ sender: Any) {}
  • 接下来,您需要通过在Document Outline选择手势识别器,然后切换到Connection Inspector Tab并将Sent Actions – > Selector拖到您的UIViewController ,然后选择您创建的相应操作,将UITapGestureRecognizer连接到您class级中的IBAction 。先前。
  • 最后,您必须在图像视图上设置“ User Interaction Enabled ”复选框。

完成,完全可点击的UIImageView,无需编写一行代码,除了您要调用的明显函数。 但是,嘿,如果你想要推动一个segue,那么你可以通过使用手势识别器Triggered Segues而不是它的Sent Actions来完成编码。

尽管Storyboard有其局限性,但无需为可点击图像编写代码。 ;)

在此处输入图像描述

我建议创建一个没有文本的UIButton,并将其制作成您想要的图像。 执行此操作后,您可以从图像按CTRL拖动到要切换到的视图控制器。 或者您可以在视图控制器的代码中进行IBAction手动分段。

对于swift 3.0版,请尝试下面的代码

 override func viewDidLoad() { super.viewDidLoad() let tap1 = UITapGestureRecognizer(target: self, action: #selector(tapGesture1)) imageview.addGestureRecognizer(tap1) imageview.isUserInteractionEnabled = true } func tapGesture1() { print("Image Tapped") } 

在故事板上设置图像视图,启用用户交互,然后使用此方法

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; if ([touch view] == yourImageView) { //add your code for image touch here } } 

我通过设置用户交互enable = true来实现这一点

以下代码在TouchesBegan中……干净简单

ImageView也在StackView中

 if let touch = touches.first { if touch.view == profilePicture { print("image touched") } }