InterfaceBuilderを使って、UIImageViewのイベントを取得してみた。
UIBarButtonItemはIBActionを接続することで、簡単にイベントを取得出来るけど、UIImageViewは、それが出来ません。なので、UIImageViewのタップイベントの取得方法を調べてみました。
手順
1. xibにUIImageViewを設置する。
2. ヘッダーファイル(.h)にIBOutletを宣言する。
@interface SampleViewController : UIViewController { @private IBOutlet UIImageView * _imageView; } @end
3. IBOutletとxibを接続する。
4. 設置したUIImageViewを選択し、「Attribute Inspector」を開く。
5. 「Tag」に、0以外の値を入れる。
6. 「User Interaction Enabled」にチェックを入れる。
7. 実装ファイル(.m)に以下のメソッドをオーバライドする。
@implementation SampleViewController - (void) touchesBegan:(NSSet *) touches withEvent: (UIEvent *) event { UITouch * touch = [[event allTouches] anyObject]; if (touch.view.tag ==_imageView.tag) { NSLog("Tap."); } } @end
「touchesBegan:withEvent:」をオーバライドすると、UIViewとかUIImageViewをタップするごとに、このメソッドが呼び出されます。UIEventからタップしたオブジェクトを取得できるので、tagプロパティを使って判別します。