1

.Netで、イベントを持つオブジェクトがある場合、デリゲートを介してそのイベントを処理するために登録できます。

void Test()
{
    Button button = new Button();
    button.Click  += new EventHandler(OnClick);
}
void OnClick(object sender, EventArgs e)
{
    text1.Text = "The Button Was Clicked";
}

Objective-Cでこの種のことを行うにはどうすればよいですか?具体的には、SneakyButtonのccTouchEndedを処理しようとしています。私はそれがこのようなものになるだろうと思いました:

SneakyButton* mybutton = [SneakyButton button];
[mybutton ccTouchEnded:self.onButtonDown];

- (void)onButtonDown:(UITouch *)touch withEvent:(UIEvent *)event
{
    CCLOG(@"The Button Was Clicked");
}
4

3 に答える 3

2

CocoaとCocoaTouchは、「ターゲット/アクション」をよく使用します。

  • ターゲット: objcオブジェクト。ターゲットはメッセージを受け取るものです。
  • アクション:セレクター。アクションは、ターゲットにメッセージを送信するためのセレクターです。

その意味で、アクションは同等です。

ターゲット/アクションが実行されると、次の一般的な形式になります。

[target performSelector:action withObject:someParameter];

もちろん、パラメータリストは現実の世界では異なります。

クラスは非常に小さいです-主題のUIControl詳細についてはそれを読んでください。これにより、コントロールのターゲット/アクションのサポートと、これらのイベントの処理に使用するインターフェイスについての良いアイデアが得られます。NSControlはCocoaの対応物ですが、これははるかに大きなクラスです。ターゲット/アクションインターフェイスよりもはるかに多くを定義します。

于 2012-01-22T21:18:13.480 に答える
0
[mybutton addTarget:self action:@selector(onButtonDown:withEvent:)
    forControlEvents:UIControlEventTouchUpInside];

の最初の引数onButtonDown:withEvent:は、タッチオブジェクトではなく、ボタンオブジェクトになることに注意してください。

ターゲット/アクションパターンの詳細については、CocoaFundamentalsGuideをご覧ください

于 2012-01-22T21:20:13.260 に答える
0

実際には、次のようなものになる可能性があります。

[mybutton ccTouchEnded:self.onButtonDown];

(void)myButtonClick:(id)sender {
    mylabel.text = @"The Button Was Clicked";
}

このリンクは役立つかもしれません:http://bynomial.com/blog/?p = 13

于 2012-01-22T21:22:27.287 に答える