2

プロジェクトで C4 フレームワークを使用していますが、ジェスチャ コントロールの使用と C4WorkSpace からのメソッドの呼び出しに少し問題があります。

この問題に関係するこのリンクを見つけましたが、プログラムがエラーをスローするのを止めているようには見えませんでした。

少し背景: UIColor、C4Shape、2 つのフロート (x/y 位置) の 4 つのプロパティを持つカスタム ボタン クラスを作成しています。カスタム ボタン オブジェクトを配列に格納し、このコードで各ボタンにジェスチャを追加し、キャンバスに追加します。

C4WorkSpace.m

        for (button in buttonArray){
        [button.shape addGesture:TAP name:@"tapGesture" action:@"tapped"];
        [self.canvas addShape:button.shape];
        [self listenFor:@"tapped" fromObject:button andRunMethod:@"doThis:"];
}

また、「-(void)setup」の外に、ログ メッセージを出力する関数もあります。

-(void)doThis:(NSNotification *)notification{
NSLog(@"notification test");
}

C4Shape クラスをカテゴリで拡張しました。このメソッドを呼び出すと、正常に動作します。

#import "C4Shape+myC4Shape.h"

@implementation C4Shape (myC4Shape)

-(void)printTest{
    NSLog(@"this is a print test");
}
@end

ボタンをタップしようとすると、エラーがスローされ、次のように表示されます:キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

「アクション」を「タップ」に設定していますが、それは私が作ったものです。通常、これは shape クラス内のメソッドを呼び出しますが、C4Shape クラスではなくメインの WorkSpace にあるメソッドを呼び出そうとしています。何が原因なのか、何が間違っているのかわかりませんか? メソッドの「アクション」部分に何か書く必要がある特定のものはありますか?

4

1 に答える 1