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

公開日: : iPhone, IT, Mac


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

UIButtonを設置して、ボタンを押された時に何かしらのアクションを行いたい場合があります。

その時、「Touch Down」と「Touch up Inside」のどちらを使うのか?
そして「Touch up Outside」って何なのか?

  • 「Touch Down」はボタンをタッチした時に呼ばれます。
  • 「Touch up Inside」はボタン領域[内]で画面から指を時に呼ばれます。
  • 「Touch up Outside」はボタン領域[外]で画面から指を離した時に呼ばれます。

    • ボタンを押したまま指を動かしボタンの外に出てから指を画面から離すという行為です。

使い方を間違えると、ボタンを押した時の挙動が意図しない動作になるので注意が必要です。

 それぞれ、どういうふうに使うか?

 ボタンを押したら画像を変えたい

「Touch up Inside」を使います。
「Touch Down」を使うと、押された瞬間にアクションが発生してしまうため、画像の変化が見えません。

この場合のコードは以下の様な感じです。

[btn setImage:image forState:UIControlStateNormal];
[btn setImage:highlightedImage forState:UIControlStateHighlighted];
[btn addTarget:self action:@selector(xxxx:) forControlEvents:UIControlEventTouchUpInside];

通常時とハイライト時の画像を設定しておき、「Touch up Inside」のイベントの時のアクションをボタンに設定しておきます。

 ボタンを押してる最中だけ何かを表示させたい

例えば、ボタンを押している間だけ「画面のヘルプ」を表示させ、ボタンを離したら消したいなど。

そういう時は、以下のようにおこないます。

  • 「Touch Down」でヘルプを表示
  • 「Touch up Inside」と「Touch up Outside」でヘルプを非表示

コードだと以下の様な感じです。
まずボタンに以下を設定。

[btn addTarget:self action:@selector(helpOn:) forControlEvents:UIControlEventTouchDown];
[btn addTarget:self action:@selector(helpOff:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(helpOff:) forControlEvents:UIControlEventTouchUpOutside];

呼ばれた側でヘルプを表示にしたり、非表示にしたりします。

 - (IBAction)helpOn:(UIButton *)sender {
	helpView.hidden = NO;
 }
 - (IBAction)helpOff:(UIButton *)sender {
	helpView.hidden = YES;
 }

よくやってしまうのが、「Touch up Inside」だけ設定して「Touch up Outside」を何もしてないケースです。
この場合、場合によっては、ヘルプが表示されたままになってしまうため、ちゃんと「Touch up Outside」も設定しておく必要があります。

広告

関連記事

no image

jQuery Mobileの初期設定 -jQuery Mobieを利用時にページ内リンクさせたい-

* 前提 jQuery Mobileを利用していて、以下のタグを使ってページ内遷移したいことがありま

記事を読む

no image

Androidアプリ開発 -画像を加工してセピア色にしてみる-

* やりたいこと ギャラリーから選んだ画像を加工してセピア色にしたい * ソース ** 画像を取得

記事を読む

no image

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

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

記事を読む

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

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

記事を読む

no image

iPhoneアプリ開発 −タッチで線を描く(1)−

* やりたいこと 今回やりたいことは以下の2点。 -(1) 画面をタッチして、指を動かして線を描きた

記事を読む

no image

MySQLのバックアップ手順 -消えたら困るものはバックアップ-

そろそろデータが消えてもらったら困るぐらいになっていたのでバックアップをとることにしました。 とい

記事を読む

setup

Google Appsで独自ドメインメールの利用

独自ドメインでメアドを持ちたかったのでGoogle Appsを利用してみました。 その各種設定の覚

記事を読む

no image

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

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

記事を読む

no image

Androidアプリ開発 -ギャラリーから選んだ画像のサムネイルを取得-

* やりたいこと +ボタンをクリックしてギャラリーを表示。 +ギャラリーで画像を選んだら、その画像の

記事を読む

jenkins-files

Windows環境でもJenkins -執事さんとご対面-

Trac Lightningに同梱されていますし、Windows環境でHudsonを使っている人は結

記事を読む

広告

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 ↑