我創建了一個自定義類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