iOS如何给没有点击事件的View添加响应操作

     开发过iOS的同学都知道,我们可以在storyboard中通过拉线IBAction为按钮、TableViewCell等添加响应事件,或者在代码中执行view对象的一个addTarget函数来进行事件响应。但是如果是一个UIImageView呢?我们发现无法在storyboard中拖拽出一条线,在代码中也没有addTarget方法,那么,如何给ImageView或者Label这类本身没有响应事件的控件增加监听呢?

    答案是手势操作。我们设置一个点击tap的手势,并把该手势添加到View上。那么此时这个View就可以监听这个手势,当这个手势发生时,就会执行响应的操作。我通过代码来为大家实现一下,通过监听一个图片的点击事件。

代码实现如下:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *image;


@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  //初始化一个Tap的点击手势,并指明点击后执行的函数为clickImage;
  UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickImage)];
  
  
  //把手势添加到View上面;
  [self.image addGestureRecognizer:tapGesture];
  
  
}

//点击图片后执行的操作;
- (void)clickImage{

  NSLog(@"图片被点击了");
  }

@end

此时运行程序,发现点击图片还是没有任何反应。那是因为我们少了一步设置。这一步设置有两种方法:只要任选一个就行了。

【方法1】:

去storyboard勾选这个选项:


【方法2】:

直接在代码中添加如下代码:

[self.image setUserInteractionEnabled:true];

这样,之前不能点击的问题就很明了了。对于其他的View,我们也可以进行这样的手势识别,还是比较方便的。



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

你可能感兴趣的:(ios,Objective-C,点击事件)