0

我使用 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];

提前致谢。

4

1 回答 1

0

UIControlEventTouchUpInside消息由' DCRoundSwitchstouchesEnded方法发送。因此,需要调用此方法才能让您的交换机接收消息以触发您的操作。这不会发生,因为touchesCancelled是由UIGestureRecognizers 发送的——当它们识别出他们的手势时,它们会自动取消对其他视图的触摸。UIGestureRecognizer如果在创建 s 并使用它们的属性附加到开关(在DCRoundSwitch的 setup 方法中)时关闭此行为cancelsTouchesInView,这将允许 touchesEnded 将其UIControlEventTouchUpInside消息发送到您的开关,以便可以触发您的操作。

希望这可以帮助。

// 注意:如果你的目标动作要运行一些动画,你需要做一些进一步的改变DCRoundSwitch来防止它阻塞你的动画。有关更多详细信息,请参阅此 SO 答案

于 2012-12-30T03:50:25.627 回答