問題はこれです...
UIBezierClass を拡張する PathExtended というクラスを作成し、そこに NSString ID を追加しました。
次に、PathExtended の配列があります。drawrectメソッドで私は書いた:
p = [[PathExtended alloc] init];
for (int i=0; i<[arrayOfPaths count]; i++) {
[p appendPath:[arrayOfPaths objectAtIndex:i]];
[p closePath];
}
[p applyTransform:CGAffineTransformMake(a, b, c, d, e, f)];
[p fill];
ここで、touchend メソッドでテストすると、次のようになります。
if ([p containsPoint:pointTouched]) {
NSLog(@"There is!");
}
大丈夫です!!!代わりに、テストすると:
if ([p containsPoint:pointTouched]) {
NSLog(@"ID= %@", p.ID);
}
ログが空白です!!
なぜそれが起こるのか理解できますが、問題を解決する方法がわかりません。appendPath は一意のパスを作成すると思っていたので、ID などの各パス情報は失われます。また、appendPath メソッドを使用せずに各パスを描画すると、問題を解決できると思いましたが、わかりません... 間違った方法に従っているようです。
何か案が???私の英語でごめんなさい(私はイタリア人です:P)
編集:
PathExtended .h
@interface PathExtended : UIBezierPath {
NSString* ID;
}
@property (nonatomic, readwrite) NSString* ID;
-(id) initwithID:(NSString*) _ID;