iOS UISwitch 动作调用了两次

iOS UISwitch Action called twice

我的应用程序中有 UISwitch IBAction,它是:

- (IBAction)nearMeSwitchAction:(UISwitch *)sender {

        if(nearMeSwitch.isOn)
            [self getLocation];

        [self myMethod];
}

- (void) getLocation
{
  my code...
 [nearMeSwitch setOn:NO animated:YES];
}

在我的 getLocation 方法中,我使用了 [nearMeSwitch setOn:NO animated:YES],当我点击我的开关时,它会再次调用 nearMeSwitchAction。因此 myMethod 被调用了两次。我不想要那个。当我从 getLocation 关闭开关时,我不想执行 nearMeSwitchAction。还有其他方法可以做到这一点吗?

您无法在更改 UISwitch 值时阻止 nearMeSwitchAction 被呼叫,但您可以阻止 myMethod 被呼叫。创建一个 Bool 属性,如 isFromGetLocation,如果它是 true,则不要调用该方法。

- (IBAction)nearMeSwitchAction:(UISwitch *)sender {

        if(nearMeSwitch.isOn)
            [self getLocation];
        if(isFromGetLocation)
           //For next time
           isFromGetLocation = NO;
        else
            [self myMethod];
}

- (void) getLocation
{
    //my code...
    isFromGetLocation = YES;
    [nearMeSwitch setOn:NO animated:YES];
}