我创建了一个自定义类AnimalView
,它是UIView
的一个子类,其中包含UILabel
和UIImageView
。为什么我无法通过isKindOfClass获得正确的自定义类的类?
@interface AnimalView : UIView {
UILabel *nameLabel;
UIImageView *picture;
}
然后,我在几个AnimalView
添加到ViewController.view。在touchesBegan:withEvent:
方法中,我想检测触摸对象是否为AnimalView
。这里是viewController的代码:
@implementation AppViewController
- (void)viewDidLoad {
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:...
[self.view addSubview scrollview];
for (int i = 0; i<10; i++) {
AnimalView *newAnimal = [[AnimalView alloc] init];
// customization of newAnimal
[scrollview addSubview:newAnimal;
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
UIView *hitView = touch.view;
if ([hitView isKindOfClass:[AnimalView class]]) {
AnimalView *animal = (AnimalView *)hitView;
[animal doSomething];
}
}
但是,当我点击动物时什么都没有发生。当我检查hitView
的等级NSLog(@"%@", [hitView class])
时,它总是显示UIView
而不是AnimalView
。当它被添加到ViewController时,AnimalView是否改为UIView?有什么方法可以找回自定义类的原始类吗?
感谢Brad提醒。当我远离我的Mac时,我完全忘记了在AnimalView中还有一个UIView。这完全解决了我的头痛。非常感谢!! – Anthony 2010-03-14 12:20:10