UISwitch值更改事件未触发iOS

时间:2015-07-23 05:06:58

标签: ios objective-c uiscrollview uiswitch

我在滚动视图中以编程方式添加UISwitch。

UIVIew - > UIScrollView - > UISwitch

UISwitch *toggleSwitch = [[UISwitch alloc] initWithFrame: CGRectZero];
[toggleSwitch addTarget:self action:@selector(flipMode:) forControlEvents:UIControlEventValueChanged];
toggleSwitch.on = YES;
toggleSwitch.userInteractionEnabled = YES;
[scrollView addSubview: toggleSwitch];

行动方法:

- (IBAction)flipMode:(id)sender{    
    if([sender isOn])
    {
       // On Toggle ON
    } else {
     //On Toggle OFF
    }
}

当我们多次切换开关或者在某个时间点拖动或将开关从ON缓慢移动到OFF状态或反之亦然时,操作不会被调用。在价值变化的下一刻,它将触发事件。

这个问题的发生是15-20次试验中的2次。无法找到它的根本原因。

帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

将滚动视图的delaysContentTouches属性设置为NO

yourScrollView.delaysContentTouches = NO;
  

这将导致您切换到" get"相反,立即接触   比让他们先去UIScrollView。   查看this回答。

您的flipMethod:应如下所示

-(void)flipMode:(id)sender
{
 if([sender isOn])
   [toggleSwitch setOn:YES animated:YES];
 else
   [toggleSwitch setOn:NO animated:YES];
}