Документация UIControl четко гласит:
Когда пользователь касается элемента управления в
путь, который соответствует одному или нескольким
указанные события, отправляет UIControl
сам sendActionsForControlEvents:.
Итак, то, что я сделал, довольно просто. Я создал подкласс UIControl и переопределил это следующим образом:
- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents {
[super sendActionsForControlEvents:controlEvents];
NSLog(@"- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents");
}
Затем я создал свой пользовательский UIControl и добавил action-target-thing вроде этого:
MyCustomControl *twb = [[MyCustomControl alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 80.0f, 80.0f)];
twb.backgroundColor = [UIColor yellowColor];
[twb addTarget:self action:@selector(anyTouch:) forControlEvents:UIControlEventAllTouchEvents];
[self addSubview:twb];
также я реализовал этот метод -anyTouch: для селектора, например:
- (void) anyTouch:(id)sender {
NSLog(@"anyTouch");
}
Что происходит: я касаюсь вида с этого элемента управления, и -anyTouch выбрасывает сообщения журнала «anyTouch», пока я касаюсь его. Но даже если я подкласс UIControl и переопределил sendActionsForControlEvents:, я не получаю сообщение журнала, как я должен. Это бессмысленно. Я переписал это. Это должно записать это сообщение, черт побери. %! § $%