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のみで大丈夫。

広告

関連記事

mixisample

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

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

記事を読む

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

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

記事を読む

no image

iPhoneアプリ開発 -利用するべきサービス-

iPhone(iOS)アプリ開発において使っているサービスを列挙。 この手のサービスがないと、開発中

記事を読む

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

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

記事を読む

Jenkins + DeployGate(1) -DeployGateでAndroidアプリ開発-

TestFlight for Androidが発表されて1ヶ月ぐらいたちますが、音沙汰がありません。

記事を読む

Jenkins + iPhoneアプリ(番外1) -TestFlightを利用する-

* これまで - -- 執事(Jenkins)を雇いました。 * やりたいこと Jenk

記事を読む

no image

Selenium2.0でUIテスト(2) -Rubyでやってみよう-

前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele

記事を読む

input

CakePHP2系でTwigを利用 -書き方のメモ-

CakePHP2系でTwigをどのように記述するかのメモ。 数パターンしか載せてないですが、だいた

記事を読む

no image

研究室での進捗報告の方法について、ふと思ったこと

* 以下に加筆・修正して移動しました。

記事を読む

no image

iPhoneアプリ開発 −複数前の画面に戻る−

* やりたいこと ある画面から別の画面に遷移したい。 -1つ前の画面に戻りたい。 -2つ前の画面に戻

記事を読む

広告

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 ↑