[iPhone]タッチイベントを検出する

Facebook にシェア
このエントリーをはてなブックマークに追加
[`livedoor` not found]
LinkedIn にシェア
[`evernote` not found]
GREE にシェア
LINEで送る

タッチイベントを検出するためには

タッチイベントを検出できるのはイベントの処理を行うUIResponderクラスのサブクラスになります。UIViewはUIResponderクラスのサブクラスなので、イベントを検出できるメソッドが利用できます。

タッチイベントを検出する基本的なメソッド

メソッド 呼び出されるタイミング
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 指でタッチしたとき
– (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 指を動かしたとき
– (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 指が離れたとき

今回作成するもの

今回はまっさらな画面をベースにタッチした箇所に画像を移動させるアプリケーションを作成します。今までつぎはぎしてきたプロジェクトはいったん忘れて新しいプロジェクトを作成します。→プロジェクトの作成方法

タッチイベントを実装する

Object libraryからImageViewをドラッグ&ドロップで配置します。そうすると空のImageViewが配置されるので、表示する画像を指定します。
まず、プロジェクトの任意の場所に画像ファイルを取り込みます。次にShow the Attributes Inspectorを選択し、Imageのドロップダウンリストを選択すると、取り込んだ画像が選択肢としてあがってくるので、選択します。(サイズ等は適宜調節してください。)

また、画像の座標をプログラマティックに変更するので、Outletで取り込んだ画像を接続します。

最初にも言及しましたが、UIViewはUIResponderのサブクラスなので、タッチしたときに発生したイベントをキャッチするメソッドをオーバーライドし、***ViewController.mに以下の実装を追加します。

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *aTouch = [touches anyObject];
    CGPoint point = [aTouch locationInView:self.view];
    mySignal.center = point;
}

簡単に説明を加えると、タッチイベントを取り出します。

    UITouch *aTouch = [touches anyObject];

タッチイベントから座標を取得します。

    CGPoint point = [aTouch locationInView:self.view];

画像の中心座標とタッチイベントから取得した座標を同期します。

    mySignal.center = point;

動かしてみる

初期状態

左上をタッチ

右下をタッチ

コメントを残す