У меня есть контроллер представления, который содержит вложенные UIView
. Я хотел бы добавить прослушиватель касаний для каждого добавляемого подпредставления. Но я поймал ошибку SIGABRT
, когда нажимаю на подвид.
Вот мой код:
- (void) viewDidLoad {
[super viewDidLoad];
//set container
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(5, 5, 320, 420)];
container.backgroundColor = [UIColor blueColor];
//create new subview within container. I call it "card"
for (int i=0; i<5; i++)
{
//create card
UIView *card = [[UIView alloc] initWithFrame:CGRectMake(10, 35 + (65 * i), 300, 45)];
card.backgroundColor = [UIColor greenColor];
//set tap event with action selector = cardRowTapped
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cardRowTapped)];
[card addGestureRecognizer:tap];
//add subview
[container addSubview:card];
}
//add subview to self
[self.view addSubview:container];
}
и вот мой код обработчика крана
- (void) cardRowTapped:(UITapGestureRecognizer *)gr {
NSLog( @"hello");
}
Вывод консоли:
03.10.2012, 13:23:37.173 MyProject[5167:707] -[MyViewController cardRowTapped]: нераспознанный селектор отправлен экземпляру 0x2cd810
2012-10-03 13:23:37.179 MyProject[5167:707] * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «-[MyViewController cardRowTapped]: нераспознанный селектор отправлен в экземпляр 0x2cd810»
* EM> Первый стек бросить вызов: (0x314b888f 0x377f6259 0x314bba9b 0x314ba915 0x31415650 0x30c45637 0x30bd5d65 0x30e06479 0x30b51f55 0x30b50aa3 0x30b5d7e9 0x30b5d627 0x30b5d1f5 0x30b43695 0x30b42f3b 0x3348922b 0x3148c523 0x3148c4c5 0x3148b313 0x3140e4a5 0x3140e36d 0x33488439 0x30b71cd5 0x76e8d 0x76e28) прекратить называется бросать исключение (lldb)
Любая идея, почему это происходит?