プロジェクトで 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 にあるメソッドを呼び出そうとしています。何が原因なのか、何が間違っているのかわかりませんか? メソッドの「アクション」部分に何か書く必要がある特定のものはありますか?