主なGUIコンポーネントの利用 (4/4)
作成:2011-03-22 08:14
更新:2011-03-22 08:14
更新:2011-03-22 08:14
■さまざまなイベントの利用
以上、3つのコンポーネントでは、だいたい共通した部分があります。それは「値を保持しており、ユーザーが操作して値を変更する」タイプのコンポーネントである、という点です。このため、イベント処理用メソッドをバインドすると、いずれも「Value Changed」という名前のイベントにメソッドが接続されました。
では、これらのコンポーネントは、値が変化したときに何かを実行するだけで、それ以外の操作で処理を行わせたりすることはできないのでしょうか。――いいえ、そうではありません。単に、マウスでびよ〜んと線をつなぐと、「デフォルトでValue Changedのイベントに接続される」ようになっている、というだけのことです。iOSのGUIコンポーネントには、その他にもさまざまな操作に応じたイベントが用意されており、それらをメソッドを接続することできめ細かなイベント処理が行えるようになっています。
コンポーネントで利用可能なイベント類は、Inspectorウインドウの「Connetions Inspector」(Inspectorウインドウの左から2つ目のアイコン)を選択すると見ることができます。これを選ぶと、ウインドウ内にずらりと項目が表示されます。これらの内、「Events」という項目内にあるのが、そのコンポーネントで利用可能なイベント類です。
これらは、ざっと整理すると「タッチ関係」と「エディト関係」といってよいでしょう。ユーザーの操作ということからすると、タッチ関係のイベントが使えるようになれば、ずいぶんといろいろな操作が行えるようになります。とりあえず、タッチ関係の基本的なイベントとして、以下のようなものを使ってみましょう。
Touch Down――コンポーネントを押した瞬間に発生するイベントです。
Touch Down Repeat――連続してタッチしたとき、2回目以降に発生するイベントです。パソコンでのダブルクリックやトリプルクリックのようなものと考えるとよいでしょう。
Touch Up Inside――コンポーネント内でタッチした指を離したときのイベントです。
Touch Up Outside――今ポーンと外で指を離したときのイベントです。
これらの動きを確かめてみましょう。Interface Builderで、LabelとButtonを1つずつ配置し、これらを接続するlabel1、button1プロパティを用意します。そして、タッチ関係のイベントを接続するためのものとして、「button1Down:」「button1StillDown:」「button1UpIn:」「button1UpOut:」といったメソッドを用意することにしましょう。
イベントと各メソッドの接続は、Interface BuilderのInspectorウインドウで行います。ここでConnetions Inspectorに表示を切り替えてイベント名の一欄を表示させてください。各イベント名の一番右側に、◯マークが表示されているはずです。
この◯から、File's Ownerまでドラッグ&ドロップし(例によって、びよ〜んと線が伸びます)、現れた黒い半透明のウインドウから接続するメソッド名を選びます。(接続できると、◯マークが●に変わります)
このようにして、4つのイベントをそれぞれメソッドに接続して、ソースコードを記述して実行すれば、それぞれのイベントに応じてLabelにテキストが表示されるようになります。――さまざまなイベントが利用できるようになると、コンポーネントも更に使いこなせるようになりますよ。
では、これらのコンポーネントは、値が変化したときに何かを実行するだけで、それ以外の操作で処理を行わせたりすることはできないのでしょうか。――いいえ、そうではありません。単に、マウスでびよ〜んと線をつなぐと、「デフォルトでValue Changedのイベントに接続される」ようになっている、というだけのことです。iOSのGUIコンポーネントには、その他にもさまざまな操作に応じたイベントが用意されており、それらをメソッドを接続することできめ細かなイベント処理が行えるようになっています。
コンポーネントで利用可能なイベント類は、Inspectorウインドウの「Connetions Inspector」(Inspectorウインドウの左から2つ目のアイコン)を選択すると見ることができます。これを選ぶと、ウインドウ内にずらりと項目が表示されます。これらの内、「Events」という項目内にあるのが、そのコンポーネントで利用可能なイベント類です。
これらは、ざっと整理すると「タッチ関係」と「エディト関係」といってよいでしょう。ユーザーの操作ということからすると、タッチ関係のイベントが使えるようになれば、ずいぶんといろいろな操作が行えるようになります。とりあえず、タッチ関係の基本的なイベントとして、以下のようなものを使ってみましょう。
Touch Down――コンポーネントを押した瞬間に発生するイベントです。
Touch Down Repeat――連続してタッチしたとき、2回目以降に発生するイベントです。パソコンでのダブルクリックやトリプルクリックのようなものと考えるとよいでしょう。
Touch Up Inside――コンポーネント内でタッチした指を離したときのイベントです。
Touch Up Outside――今ポーンと外で指を離したときのイベントです。
これらの動きを確かめてみましょう。Interface Builderで、LabelとButtonを1つずつ配置し、これらを接続するlabel1、button1プロパティを用意します。そして、タッチ関係のイベントを接続するためのものとして、「button1Down:」「button1StillDown:」「button1UpIn:」「button1UpOut:」といったメソッドを用意することにしましょう。
イベントと各メソッドの接続は、Interface BuilderのInspectorウインドウで行います。ここでConnetions Inspectorに表示を切り替えてイベント名の一欄を表示させてください。各イベント名の一番右側に、◯マークが表示されているはずです。
この◯から、File's Ownerまでドラッグ&ドロップし(例によって、びよ〜んと線が伸びます)、現れた黒い半透明のウインドウから接続するメソッド名を選びます。(接続できると、◯マークが●に変わります)
このようにして、4つのイベントをそれぞれメソッドに接続して、ソースコードを記述して実行すれば、それぞれのイベントに応じてLabelにテキストが表示されるようになります。――さまざまなイベントが利用できるようになると、コンポーネントも更に使いこなせるようになりますよ。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※MyIAppViewController.h #import <UIKit/UIKit.h> @interface MyIAppViewController : UIViewController { UILabel * label1; UIButton * button1; } @property (nonatomic, retain) IBOutlet UILabel *label1; @property (nonatomic, retain) IBOutlet UIButton * button1; - (IBAction)button1Down:(id)sender; - (IBAction)button1StillDown:(id)sender; - (IBAction)button1UpIn:(id)sender; - (IBAction)button1UpOut:(id)sender; @end ※MyIAppViewController.m import "MyIAppViewController.h" @implementation MyIAppViewController @dynamic label1; @dynamic button1; - (IBAction)button1Down:(id)sender { [label1 setText:@"Down"]; } - (IBAction)button1StillDown:(id)sender { [label1 setText:@"StillDown"]; } - (IBAction)button1UpIn:(id)sender { [label1 setText:@"UpIn"]; } - (IBAction)button1UpOut:(id)sender { [label1 setText:@"UpOut"]; }
※関連コンテンツ
「初心者のためのiphone/ipadプログラミング入門」に戻る