以编程方式更改时 UISwitch 不发送 valueChanged 事件

2023-11-27

我有一对 UISwitches 通过 valueChanged 事件连接到 IBAction。当触摸开关时, valueChanged 事件会正常触发。但是,如果我以编程方式更改其中一个开关,它不会调用我的 IBAction。

- (IBAction)switchChanged:(UISwitch *)sender {
    if (sender == self.shippingSwitch) {
        if (self.shippingSwitch.on && !self.PayPalSwitch.on) {
            [self.PayPalSwitch setOn:YES animated:YES];
        }
    }

    if (sender == self.PayPalSwitch) {
        if (!self.PayPalSwitch.on) {
            // This is not working when the PayPal switch is set via the code above
            self.PayPalEmailField.backgroundColor = [UIColor grayColor];
            self.PayPalEmailField.enabled = NO;

            if (self.shippingSwitch.on) {
                [self.shippingSwitch setOn:NO animated:YES];
            }
        } else {
            self.PayPalEmailField.backgroundColor = [UIColor clearColor];
            self.PayPalEmailField.enabled = YES;
        }
    }
}

这是正确且理想的行为。由于您显式更改了该值,因此由您决定如何处理更改后的值。

这样做的原因是,在通过用户交互通知其值已更改后,显式更改控件的值并不罕见。如果显式状态更改导致事件再次触发,您将陷入无限循环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式更改时 UISwitch 不发送 valueChanged 事件 的相关文章

随机推荐

  • R:将数据帧转换为表

    我在 R 中有一个数据框 其中包含三个变量 例如df V1 df V2 df V3 df V1 and df V2都是因素 而df V3是数字 df lt data frame V1 letters 1 4 V2 rep LETTERS 1
  • 性能:绝对 URL 与相对 URL

    什么更快 热链接 内联链接 to an 绝对URI或自己托管资源并使用相对URI In his 有关如何在 Internet Explorer 中设置 HTML5 元素样式的教程 Remy Sharp 指出热链接会导致 额外的 HTTP G
  • 将破折号图嵌入到 html 中

    我想将 Plotly 图表嵌入到我自己的 html 文件中 使用 Dash 我可以在 API 本地服务器中生成相同的图表 但是对于我自己的 HTML 文件 我没有得到任何解决方案 我的达世币解决方案 import dash import d
  • jQuery $.ajax() 功能 - 访问 XMLHttpRequest 对象

    是否可以访问XMLHttpRequest来自成功回调的对象 ajax 功能 具体来说 我需要访问XMLHttpRequest responseBody在IE中 根据文档返回的jqXHR对象不暴露 responseBody财产 这似乎是一个很
  • JasperReports:如何创建一个以多个值作为输入的参数

    我有一份报告 其中可能会为名为的参数传递多个值Product Type 这样我的查询就会变成这样 Select Id name from temp where product type IN prod1 prod2 prod3 你应该产品类
  • Android 6.0 (Marshmallow) READ_CONTACTS 权限允许在权限被拒绝时读取联系人姓名

    我想检查新的权限模型如何工作 因此在应用程序的设置中我禁用Contacts 然后我进入应用程序并尝试阅读Contacts而且 它有点起作用 try Uri result data getData int contentIdx cursor
  • WriteConsoleW、wprintf 和 Unicode

    AllocConsole consoleHandle GetStdHandle STD OUTPUT HANDLE WriteConsoleW consoleHandle L qwe n 9 NULL NULL wfreopen L CON
  • 将字节转换为浮点数?

    我有一个必须解析的二进制文件 并且我正在使用 Python 有没有办法获取 4 个字节并将其转换为单精度浮点数 gt gt gt import struct gt gt gt struct pack f 3 141592654 b xdb
  • 如何找到ViewByTag?

    假设我动态生成了一定数量的 LinearLayout 它们都带有不同的标签 for int i 0 i lt 5 i final LinearLayout LinLayBtn new LinearLayout this LinLayBtn
  • 如何从 sklearn GridSearchCV 获取 MSE 和 R2?

    我可以在管道上使用 GridSearchCV 并将评分指定为 MSE or R2 然后我可以访问gridsearchcv best score 恢复我指定的那个 我如何获得 GridSearchCV 找到的解决方案的其他分数 如果我使用其他
  • 小数点前 6 位和小数点后 2 位的正则表达式

    我需要一个正则表达式 其中小数是可选的 如果有小数点 则小数点前最多 6 位 小数点后最多 2 位 如果不存在小数点 则最多 6 位有效 正则表达式测试器 d 0 6 d 1 2 上述正则表达式最多允许 8 位数字 不带小数 我如何根据我的
  • 如何使用 Jest 模拟同一模块中的函数?

    正确模拟以下示例的最佳方法是什么 问题是导入时间之后 foo保持对原始内容的引用未被模拟bar module js export function bar return bar export function foo return I am
  • 如何查看 Java 小程序的错误消息?

    在尝试回答一个问题时小程序问题 OP 不知道如何查看他的小程序的错误消息 我自己这样做已经有一段时间了 我没有找到任何一步一步的说明 所以我在这里发布一个问题和答案 以供后代使用 Windows 双击右下角时钟旁边的系统托盘中的 Java
  • 更新 R data.frame 中的单个值(不是行)

    我想更新的值var3在 R 数据框中mydata根据一个简单的标准 var1 var2 var3 1 1 4 5 2 3 58 800 3 8 232 8 我认为应该做到以下几点 mydata var3 mydata var3 gt 500
  • 以编程方式将 .NET 程序集安装到 GAC 中的方法

    我需要创建一个小型应用程序或脚本来将 NET 程序集安装到 GAC 中 我读过有几种方法可以做到这一点 包括 using gacutil exe 执行以下代码行 new System EnterpriseServices Internal
  • 从 CVS *,v 文件的存档中恢复文件

    我试图从一堆过去用 CVS 管理的文件中恢复一些旧的源代码 纯文本 我有一个目录 其中包含 CVS 的 v 文件格式的所有源代码文件 这看起来大部分像原始文件 但其中有相当多的 CVS 特定标头和修订信息 有没有一种简单的方法可以删除所有
  • 如何在java中获取比较器的倒数

    在一种方法中 我收到一个通用的object E extends Comparable
  • 为什么在 grid-template-columns 中显示 100% 的网格会脱离主体?

    parent position fixed width 100 left 0 top 14px display grid grid template columns 40 60 grid gap 5px background eee lef
  • 在 prop.table 的输出中附加 % 符号

    我正在尝试在输出中附加 符号prop table用于Sweave 我尝试的代码如下 m lt matrix 1 4 2 dimnames m lt list c A B c C D prop table m 1 100 C D A 25 0
  • 以编程方式更改时 UISwitch 不发送 valueChanged 事件

    我有一对 UISwitches 通过 valueChanged 事件连接到 IBAction 当触摸开关时 valueChanged 事件会正常触发 但是 如果我以编程方式更改其中一个开关 它不会调用我的 IBAction IBAction