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

FacebookページをFacebookアプリで表示 -iPhoneアプリ編-

* やりたいこと Facebookアプリを入れている人には、アプリでFacebookページで表示。

記事を読む

no image

iPhoneアプリ開発 -バックグラウンド処理をした際にはまったこと-

* おきたこと 以下のメソッドを用いて、処理に時間がかかるもの(ここだとhoge)をバックグラウンド

記事を読む

MacでRuby on Railsの開発環境構築 -Apacheで動かす-

* 環境 -MacBook Air MD231J/A -Mac OS X バージョン10.8.2

記事を読む

no image

Objective-cで悩んでいたこと −アクセサのことについて−

* 疑問 以前書いたiPhoneアプリを開発していて(Objective-Cを触っていて)疑問に思

記事を読む

no image

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

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

記事を読む

sample1

jQuery Mobile1.2のCollapsible Listsを試してみた -画像のカスタマイズについて-

8月1日にjQuery Mobile1.2 Alphaが出ました。 まだAlphaなので自

記事を読む

no image

CakePHP1.3でテストコード(3) -ENUM型が使えない-

cakePHP1.3でのSimpleTestを使ったテストケースの第3回目。 今回は、テーブル構成で

記事を読む

no image

iPhoneアプリをヒットさせるために大事な5つのこと

巷にはたくさんのiPhoneアプリがたくさんあります。 そして、毎日新しいアプリがリリースされていま

記事を読む

Jenkins + iPhoneアプリ(3) -ipaファイルをTestFlightにアップロード-

* これまで - -[http://pplace.jp/2013/01/1192/:title=

記事を読む

no image

iPhoneアプリ開発 -UIButtonのTouch Down、Touch up Inside、Touch up Outsideの使い方-

* Touch DownとTouch up Inside、Touch up Outsideの違い

記事を読む

広告

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 ↑