如何在Swift中为UIImageView对象分配一个动作

我试图分配一个UIImageView的行动,当用户点击它。

我知道如何创build一个UIButton的行动,但我怎么能模仿UIButton的相同的行为,但使用UIImageView

你需要一个UITapGestureRecognizer 。 设置使用这个:

 override func viewDidLoad() { super.viewDidLoad() let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) imageView.isUserInteractionEnabled = true imageView.addGestureRecognizer(tapGestureRecognizer) } func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) { let tappedImage = tapGestureRecognizer.view as! UIImageView // Your action } 

(你也可以使用一个UIButton并为其分配一个图像,而不需要文本,而只需连接一个IBAction)

你需要添加一个手势识别器(点击使用UITapGestureRecognizer ,点击并按住使用UILongPressGestureRecognizer )到您的UIImageView

 let tap = UITapGestureRecognizer(target: self, action: #selector(YourClass.tappedMe)) imageView.addGestureRecognizer(tap) imageView.isUserInteractionEnabled = true 

并执行select器方法,如:

 func tappedMe() { println("Tapped on Image") } 

你可以添加一个UITapGestureRecognizerUITapGestureRecognizer ,只需拖动一个到你的Storyboard / xib,按住Ctrl键从imageView拖动到gestureRecognizer,然后按住Ctrl键从gestureRecognizer拖动到Swift文件来创build一个IBAction

您还需要在UIImageView上启用用户交互,如下图所示: 在这里输入图像说明

对于迅速2.0和以上做到这一点

 @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tappedMe)) imageView.addGestureRecognizer(tap) imageView.userInteractionEnabled = true } func tappedMe() { print("Tapped on Image") } 

你实际上可以将UIButton的图像设置为通常放在UIImageView 。 例如,你会在哪里做:

 myImageView.image = myUIImage 

你可以改为使用:

 myButton.setImage(myUIImage, forState: UIControlState.Normal) 

所以,这是你的代码可能是这样的:

 override func viewDidLoad(){ super.viewDidLoad() var myUIImage: UIImage //set the UIImage here myButton.setImage(myUIImage, forState: UIControlState.Normal) } @IBOutlet var myButton: UIButton! @IBAction func buttonTap(sender: UIButton!){ //handle the image tap } 

使用这种方法的好处是,如果您必须从数据库加载图像,则可以在设置图像之前设置button的标题:

 myButton.setTitle("Loading Image...", forState: UIControlState.Normal) 

告诉您的用户您正在加载图像

你可以把UIButton放在UIImageView顶部,并且在加载图像之前听一下button