代码之家  ›  专栏  ›  技术社区  ›  Timothy Frisch

如果交换机将自行更改,我如何以编程方式调用UISwitchIBAction?

  •  0
  • Timothy Frisch  · 技术社区  · 11 年前

    有没有一种方法可以编程调用一个开关,该开关可以根据外部设备读取电压电平并将数据发送到iPod Touch,自行切换为开/关?(5伏=开关打开,小于5伏=关闭)

    2 回复  |  直到 11 年前
        1
  •  2
  •   manecosta    11 年前

    考虑到您的意见,这应该是您想要的:

    [yourSwitch addTarget:self action:@selector(switchStateChanged:) forControlEvents:UIControlEventValueChanged];
    

    然后,实际方法:

    -(void)switchStateChanged:(UISwitch*)thisSwitch{
        // code
    }
    
        2
  •  0
  •   Caleb    11 年前

    是否有方法以编程方式调用更改为 基于读取电压电平的外部设备自行打开/关闭 并将数据发送到iPod Touch?(5伏=开关打开,小于 5=开关关闭)

    是的,您当然可以设置 on 属性切换为YES或NO。例如,如果视图控制器有一个名为 theSwitch ,它可以这样设置开关:

    self.theSwitch.on = YES;
    

    也就是说,你真的 不应该 这样使用标准开关。开关是用户控件,而不是显示器。如果用户看到一个开关,他们将期望能够改变它,并且在大多数情况下,他们不会期望开关自己改变状态。最好创建一些看起来不同的指示器,这样就不会让用户感到困惑。

    此外,我认为App Store提交指南中有一段关于不要以意想不到的方式使用Apple UI元素。如果你计划在应用商店中发布你的应用,你可能会因此而被拒绝。

    一个简单的解决方案是使用UIS开关,但设置 onImage offImage 将财产添加到您自己的图像中,以便开关看起来不像用户希望控制的东西。

    更新: 从你的评论来看,你似乎只想知道开关何时改变。这个 正确的 这里的答案(IMO)是,您的更新方法不应该直接更改开关,而是应该在数据模型中设置一些值。管理包含开关的视图的视图控制器随后可以使用键值观察来观察模型,并相应地调整开关的值,以及调用开关的操作。