2009-08-07 6 views
4

документация UIControl ясно сказано:Почему мой overriden sendActionsForControlEvents: никогда не звонил?

Когда пользователь касается контроля в способом, который соответствует одному или нескольким указанных событий, UIControl посылает сам sendActionsForControlEvents :.

Так что я сделал довольно просто. Я создал подкласс UIControl и перекрытая это, как это:

- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents { 
    [super sendActionsForControlEvents:controlEvents]; 
    NSLog(@"- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents"); 
} 

Тогда я инстанцирован мой обычай UIControl и добавил экшен-мишень-вещь как это:

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» LOG сообщения в то время как я касаюсь вокруг по г т. Но даже если я подклассифицировал UIControl и переопределил sendActionsForControlEvents :, я не получаю сообщение журнала, как я должен. Это бессмысленно. Я перезаписал его. Он должен записать это сообщение, черт возьми. %! § $%

ответ

3

Я столкнулся с той же проблемой. Я не думаю, что сам UIControl использует sendActionsForControlEvents: для отправки sendAction: to: forEvent :. Из каких небольших примеров кода я видел, что эта функция существует для внешних пользователей, которым необходимо подтолкнуть события к зарегистрированным целям.

+0

Спасибо за это. Документы кажутся довольно обманчивыми. –

1

Это странно, потому что документы UIControl говорят:

Когда пользователь касается управления таким образом, что соответствует одному или более заданных событий, UIControl посылает себя sendActionsForControlEvents :. В результате UIControl отправляет действие в UIApplication в сообщении sendAction: to: from: forEvent:.

Похоже, мы должны иметь возможность переопределить sendActionsForControlEvents :, пока мой переопределенный метод никогда не вызывается либо.

+0

Насколько я могу судить, документы больше не говорят об этом. Это потому, что это никогда не было правдой. :) – matt

Смежные вопросы