iPhoneアプリ開発 - touchesBeganとUITapGestureRecognizerの差(タッチとタップ) –

公開日: : iPhone, IT, Mac


「画面にある画像を移動させたい」とか、「画面に線を書きたい」ということがあるかと思います。
ぐぐるとよく出てくるのが、以下の2つ

  • UIViewControllerのtouchesBeganを使う
  • UITapGestureRecognizerを使う

この2つのどっちを使えば良いのか。
そもそも何が違うんだろうというのが疑問でした。

 とりあえず2つの使い方

 touchesBegan

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //タッチされた場所
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
}

上記の書き方で、どこかしらにタッチしたら位置が取得できます。

 UITapGestureRecognizer

//まず最初に以下を宣言しとく
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)];
self.view.userInteractionEnabled = YES;
[self.view addGestureRecognizer:tapGesture];
//略
 -(void)tap:(id)sender
{
    CGPoint tapPoint = [sender locationInView:self.view];
}

最初に宣言を書いてから、対応する関数を書いておけば呼び出されるので位置が取得できます。

 違い

そもそもタッチとタップって?って話。

  • 指を画面にタッチ→touchesBegan
  • 指を画面から離す→tap

となる。
呼ばれるタイミングが違うみたい。

なので、例えばドラッグ用の「UIPanGestureRecognizer」を使う場合、

  • 指を画面にタッチしたまま移動

が、ドラッグになるのでtouchesBeganは呼ばれるけど、tapは呼ばれない。

したがって、
「線を書きたい」という行為をする場合は、線を書く始点を判断するためにtouchesBeganを使わないとダメみたい。
※UIPanGestureRecognizerで分かるのはドラッグ開始地点からの移動した座標のため。

画面にある画像を移動させたいなら、UIPanGestureRecognizerのみで大丈夫。

広告

関連記事

no image

order byでハマったこと -order by、group byの処理順序-

CakePHPでorder byとgroup byを使っていてはまったことについてのメモ。 * 

記事を読む

Jenkins + スマホアプリ(1) -スマホアプリ用CI環境を作ってみよう-

前回までは、iPhoneアプリでのCI環境でした。 TestFlightがAndroidアプリにも

記事を読む

mixisample

iPhoneアプリ開発 -mixiSDKを使ってmixi連携をしてみる(1)-

* やりたいこと iPhoneアプリでmixiと連携し、mixiボイスなどに文字を投稿する。 ※

記事を読む

Jenkins + DeployGate(2) -DeployGateにアプリをアップ!-

DeployGateを使ってますか? 継続的にDeployってますか? TestFlightの

記事を読む

no image

はてなスターのアイコンを日本酒アイコンにしてみた

日本酒大好きです。 というわけで、はてなスターを日本酒アイコンにしてみました。 その流れ

記事を読む

Selenium2.0でUIテスト(1) -まずはPHPでやってみる-

久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々

記事を読む

no image

mailtoリンクの件名や本文の文字化け -N-02Aのケース-

* mailtoリンクの仕様 携帯電話用のWebサイトではmailtoリンクを使うことが多いと思い

記事を読む

no image

iPhoneアプリ開発 芳名帳アプリ作成(6) -写真に保存-

* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=

記事を読む

no image

CakePHP1.3にSmartyを導入

いい加減、CakePHP(1.3)にもSmartyを導入することにしました。 * ダウンロード

記事を読む

no image

iPhoneアプリ開発 芳名帳アプリ作成(3) -名前を書けるようにする-

* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=

記事を読む

広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

広告

no image
[感想] Effective Objective-C 2.0 ☆☆☆☆★(4.5)

* 構成 - 第1章 Objective-Cに慣れる -

no image
[感想] iOSアプリテスト自動化入門 ☆☆☆(3.0)

* 構成 - Chapter 1 テスト自動化への取り組み

DeployGateを試してみた(iOS編) -DeployGateがiOSに対応-

今までのDeployGate - -[http://pplace.

iPhone/iPadアプリを開発するためにやったこと

今までに、iPhoneを3本ほどリリース((リリースしたアプリは全て1

no image
ターミナルでgitのコマンドを補完したりブランチ名を表示する – macでgitを便利に使うために –

* やりたいこと macのターミナルでgitをいじっていると -今の

→もっと見る

PAGE TOP ↑