IBActionについて

87 views
Skip to first unread message

m_yukio

unread,
Sep 4, 2010, 1:25:20 AM9/4/10
to cocoa-dev-japan
こんにちは、村上です。
表記の件、少し気になりましたので、質問させてください。

iOSとOS Xで違いがあるかどうかも理解していないのですが、iOSではIBActionは、以下の三種類あって、

- (IBAction)respondToButtonClick;
- (IBAction)respondToButtonClick:(id)sender;
- (IBAction)respondToButtonClick:(id)sender forEvent:(UIEvent*)event;

IBActionに対応しているコントローラは、上記の三種類のどれにも対応して、開発者が必要な方を定義して、Taget-Actionで繋げると考
えて間違っていないでしょうか?

UIControlのリファレンスに、対応するアクションは、以下の三つという説明がありました。

- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event

アクションを登録するメソッドは、以下の一つなので、

- (void)addTarget:(id)target action:(SEL)action forControlEvents:
(UIControlEvents)controlEvents

登録されたアクションのタイプを識別して、呼び分けているということなのでしょうか。

実は、恥ずかしながら以前は二番目のものしか認識していなくて、iPhone関連のサンプルで一番目のものがよく利用されていて、i引数がないタイプが
追加された?と思っていました。

blue_field

unread,
Sep 4, 2010, 1:49:57 AM9/4/10
to cocoa-dev-japan
あっていると思います

- (void)action と
- (void)action:(id)sender は、UIControlEvents=UIControlEventTouchUpInside
になります


> 実は、恥ずかしながら以前は二番目のものしか認識していなくて、iPhone関連のサンプルで一番目のものがよく利用されていて、i引数がないタイプが
> 追加された?と思っていました。

たしかに、Macから移行してくると、「引数無くてもよかったの?」って思いますよね
Mac側は、Snow Leopardになっても2番目しかないですね

すでにお気付きかもしれませんが、iOSでは、1つのControlに複数のactionが登録できるようにもなっています

m_yukio

unread,
Sep 4, 2010, 7:03:16 PM9/4/10
to cocoa-dev-japan
ありがとうございます。
気になっていましたので、これで、気持ちがすっきりしました。
Reply all
Reply to author
Forward
0 new messages