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」も設定しておく必要があります。

広告

関連記事

sample1

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

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

記事を読む

no image

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

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

記事を読む

SnapCrab_NoName_2012-12-1_14-44-53_No-00

アプリのためにFacebookページ作成 -会社のメールアドレスで管理する方法-

アプリを作ると、色々と宣伝をしたくなります。 宣伝の方法は色々ありますが、今回はFacebookペ

記事を読む

no image

github-flowを使っての開発(3) -1つのプロジェクトを複数人で開発-

今まで2回ほどgithub-flowをもとにした開発の流れを書きました。 今回は、複数人で開発をする

記事を読む

no image

「Google Apps」無償版の新規登録が終了

以前、「Google Apps」を利用した以下の記事を書きましたが、とうとう無償版の新規登録が終了

記事を読む

no image

Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-

以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ

記事を読む

no image

jQuery Mobile導入手順 -はじめの一歩-

jQuery Mobileの1.0がリリースされ、利用したい方が増えていると思います。 最初に何を

記事を読む

no image

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

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

記事を読む

no image

Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法

* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス

記事を読む

no image

Twitterでサービスにログイン -ソーシャルログイン-

* やりたいこと -自身のWebサービスにTwitterIDでログイン(ソーシャルログイン)したい。

記事を読む

広告

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 ↑