无法调用DCRoundSwitch UIControlEventTouchUpInside事件

时间:2012-09-24 09:53:57

标签: objective-c ios custom-controls uiswitch

我使用DCRoundSwitch创建自定义开关,问题是我无法调用UIControlEventTouchUpInside事件,但只调用了UIControlEventValueChanged事件。

以下是我在viewdidload中编写的代码:

self.swtchDailyReminder.on = YES;
self.swtchDailyReminder.onTintColor =[UIColor colorWithRed:47.0/255.0 green:160.0/255.0
blue:158.0/255.0 alpha:1.0];
[self.swtchDailyReminder addTarget:self action:@selector(switchDailyReminderToggled:)
forControlEvents:UIControlEventTouchUpInside];

提前致谢。

1 个答案:

答案 0 :(得分:0)

UIControlEventTouchUpInside消息由DCRoundSwitch的{​​{1}}方法发送。因此,需要调用此方法,以便您的交换机接收消息以触发您的操作。这不会发生,因为touchesEnded正在发送touchesCancelled - 当他们识别出他们的手势时,他们会自动取消对其他视图的触摸。如果您在创建UIGestureRecognizer并使用其UIGestureRecognizer属性将其附加到交换机(在DCRoundSwitch的设置方法中)时关闭此行为,则会允许touchesEnded发送{向您的交换机发送{1}}消息,以便可以触发您的操作。

希望这有帮助。

//注意:如果您的目标操作要运行某些动画,则需要对cancelsTouchesInView进行一些进一步的更改,以防止它阻止您的动画。有关详细信息,请参阅this SO answer