1. 程式人生 > >iOS如何給沒有點選事件的View新增響應操作

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,我們也可以進行這樣的手勢識別,還是比較方便的。