Почему мои переопределенные sendActionsForControlEvents: никогда не вызывались? - PullRequest
5 голосов
/ 07 августа 2009

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

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010

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

1 голос
/ 08 августа 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...