2013-03-15 2 views
0

Мне нужно реализовать пользовательский UISwitch, и для этого я использую класс RCSwitch (спасибо Рэй Вендерлих и Роберт Чин).RCSwitch активируется два раза за одно касание

Итак, я добавил класс RCSwitch в свой проект, подключил графику и отлично смотрел, но! Это не работает отлично. Проверьте это:

этого кода:

//@interface 
@property (nonatomic, strong) RCSwitchOnOff *onSwitch; 

//implementation 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.onSwitch = [[RCSwitchOnOff alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2 - 39.5, self.view.frame.size.height/2 - 150, 80, 35)]; 
    [self.onSwitch addTarget:self action:@selector(switchSwitched:) forControlEvents:UIControlEventTouchUpInside]; 

// self.defaultSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2 - 39.5, self.view.frame.size.height/2 - 150, 80, 35)]; 
// [self.defaultSwitch addTarget:self action:@selector(switchSwitched:) forControlEvents:UIControlEventTouchUpInside]; 

. 
. 
. 
} 

- (void)switchSwitched:(id)sender 
{ 
    NSLog(@"switch touched!"); 
} 

причина этого в NSLog

2013-03-15 09:56:54.575 Secret-Project[1190:c07] switch touched! 
2013-03-15 09:56:54.576 Secret-Project[1190:c07] switch touched! 

Для метода сенсорного один пользователя switchSwitched пожаров в два раза! И когда я uncommnet defaultSwitch и комментирует значениеSwitch, обычный переключатель запуска UISwitch переключается только один раз.

Что, черт возьми? Здесь кто-то с той же проблемой?

ответ

0

Я получил его, RCSwitch.m есть этот метод:

- (void)performSwitchToPercent:(float)toPercent 
{ 
    endDate = [NSDate dateWithTimeIntervalSinceNow:fabsf(percent - toPercent) * animationDuration]; 
    percent = toPercent; 
    [self setNeedsDisplay]; 
    [self sendActionsForControlEvents:UIControlEventValueChanged]; 
    [self sendActionsForControlEvents:UIControlEventTouchUpInside]; 
} 

Последняя линия SENDA действие и из-за этого метода для выключателя запуска в два раза.

+0

Ход, вы решили? Я не думаю, что комментировать последнюю строку в библиотеке - это решение, верно? – Jan

+0

На самом деле я прокомментировал последнюю строку, но ведь в финальной версии я предпочел использовать RCSwitch, так что, возможно, есть еще одно решение. Кстати: если вы прокомментируете, что последний переключатель линии по-прежнему работает правильно. – lvp

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