Я создал пользовательский класс AnimalView
, который является подклассом UIView
, содержащим UILabel
и UIImageView
.
@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
. Правда ли, что AnimalView изменился на UIView, когда он добавлен в ViewController? Можно ли как-нибудь вернуть исходный класс пользовательского класса?