У меня есть подклассы UIControl и в нем я отправляю:
[self sendActionsForControlEvents:UIControlEventValueChanged];
Когда я создаю экземпляр объекта, я добавляю цель следующим образом:
[starView addTarget:self action:@selector(starRatingChanged:) forControlEvents:UIControlEventValueChanged];
Представление отображается нормально, и при отсутствии цели функционирование работает хорошо. Но при добавлении цели происходит сбой. Есть идеи почему?
Мой класс объявлен с:
@interface RMStarRating : UIControl {...}
Для чего это стоит, я настроил свой взгляд в - (void)layoutSubviews
. Есть ли другой метод, который мне нужно разделить на подклассы, чтобы цели были сохранены правильно или для целей были отправлены правильные действия? Я думал, что UIControl справился с сохранением целей и действий для вас.
ОБНОВЛЕНИЕ: пытаемся предоставить больше информации
Я настроил объект следующим образом:
RMStarRating *starView = [[RMStarRating alloc] initWithFrame:CGRectMake(10, 70, 23*5, 30)];
[starView addTarget:self action:@selector(starRatingChanged:) forControlEvents:UIControlEventValueChanged];
....
[self.view addSubview:starView];
Мой sendAction, согласно предложению Джордана:
- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
NSLog(@"send action");
[super sendAction:action to:target forEvent:event];
}
Моя функция, которая вызывает sendActionsForControlEvents:
- (void)updateValue:(UITouch *)touch {
....
NSLog(@"sendActionsForControlEvents");
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
И функция, которая должна вызываться (и она тоже в шапке):
- (void)starRatingChanged:(id)sender {
NSLog(@"star rating changed");
}
А журнал просто выплевывает:
2010-10-22 09:45:41.348 MyApp[72164:207] sendActionsForControlEvents
2010-10-22 09:45:41.350 MyApp[72164:207] send action
Отладчик имеет: