我将 UIImageView 子类化了,它被称为 ACCascadeImageView。
@interface ACCascadeImageView : UIImageView{
BOOL isSpotlight;
}
@property (assign, nonatomic) BOOL isSpotlight;
-----
@implementation ACCascadeImageView
@synthesize isSpotlight;
然后我像这样创建实例,并添加一个手势识别器..
ACCascadeImageView *imageview =
[[ACCascadeImageView alloc] initWithFrame:imageframe];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[imageview addGestureRecognizer:singleTap];
在 handleSingleTap 方法中,我循环遍历我的 UIScollView 子视图,并尝试为每个子视图执行此操作...
(imageview in this scope is [gestureRecognizer view])
[imageview setIsSpotlight:NO];
但我明白这个...
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[UIImageView setIsSpotlight:]: unrecognized selector sent to instance 0x6888be0'
为什么我的ACCascadeImageView
突然变成了UIImageView
?如果我做了一些愚蠢的事情,我深表歉意,但我之前已经进行了子类UIImageView
化。我很困惑。
我应该说我已经NSLog'd [imageview class]
得到了,“ ACCascadeImageView
”。
这是问题所在:
NSArray *cascadeImages = [PhotoCascade subviews];
for (ACCascadeImageView *v in cascadeImages){
NSLog(@"RESPONDS: %d", [v respondsToSelector:@selector(setIsSpotlight:)]);
[v setIsSpotlight:NO];
}
我得到:响应:1 响应:0
然后它就死了。