iOS如何給沒有點選事件的View新增響應操作
阿新 • • 發佈:2019-01-04
開發過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,我們也可以進行這樣的手勢識別,還是比較方便的。