2013-03-15 109 views
0

我需要實現自定義UISwitch,爲此我使用RCSwitch類(感謝Ray Wenderlich和Robert Chin)。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火災的兩倍! 而當我取消defaultSwitch並評論switch時,正常的UISwitch只能啓動switchSwitched方法一次。

這是什麼?這裏有人有同樣的問題嗎?

回答

0

我得到了它, RCSwitch.m有這樣的方法:

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

最後一行森達行動,因爲這種方法對開關的推出兩次。

+0

霍德你解決了嗎?我不認爲對圖書館最後一行的評論是解決方案,對吧? – Jan 2013-07-28 21:31:33

+0

其實我評論了最後一行,但畢竟在最終版本我放棄使用RCSwitch,所以也許有另一種解決方案。順便說一句:如果你評論最後一行開關仍然正常工作。 – lvp 2013-07-31 10:09:38