这听起来微不足道,但我注意到了一些奇怪的地方。我为UISwitch的Value Changed事件连接了一个处理程序。我期望的是,每次调用处理程序时,开关的值都会改变。但事实并非如此。如果您快速地按下开关,处理程序可能会以开关的相同状态被连续调用(在我的特定应用程序中,这是一个问题)。所以我想知道是否有人注意到了这个行为,并且已经想出了一个好的解决方案。
发布于 2013-10-17 22:53:38
-(void) createSwitch
{
self.searchExistSearchNewSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(0,0,0,0)];
[self.searchExistSearchNewSwitch addTarget:self action:@selector(switchValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.searchExistSearchNewSwitch];
}
- (void)switchValueChanged:(UISwitch *)theSwitch
{
BOOL flag = theSwitch.isOn;
}
发布于 2010-11-05 00:50:02
获取处理程序中开关的状态:
- (void)valueChanged:(UISwitch *)theSwitch {
BOOL flag = theSwitch.on;
}
发布于 2011-02-10 13:45:45
每次按下都不会立即打开/关闭开关。如果开关处于off位置,您可以在它动画到on位置之前按下几次。这些按下的每一个都被解释为“打开开关”,因为在动画完成之前它不会被认为是“打开”。每次按下都会得到一个"valueChanged“回调,尽管这个值实际上还没有改变。
https://stackoverflow.com/questions/4098653
复制相似问题