问题是这个……
我创建了一个扩展 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)
编辑:
路径扩展.h
@interface PathExtended : UIBezierPath {
NSString* ID;
}
@property (nonatomic, readwrite) NSString* ID;
-(id) initwithID:(NSString*) _ID;