正如Apple的文档所写,其UISwitch功能setOn(on: Bool, animated: Bool)不会发送动作.它在iOS 10之前工作正常,但它会在我在iOS 10中调用它之后发送动作.我在"ValueChanged"事件中调用它来强制切换回来,所以我把这个事件动作两次.这是iOS 10中的一个错误吗?
edi*_*son 10
DispatchQueue.main.async {
sender.setOn(flag, animated: animated)
}
Run Code Online (Sandbox Code Playgroud)
它适用于Xcode 8.
但UISwitch.setOn(_:animated:)直接在主线程上调用不起作用.
感谢@codiction:
UISwitch.setOn(_:animated:) 可以在主线程上调用direclty,但不能在iOS 10上的UISwitch ValueChanged操作中直接调用.
小智 8
以下解决方案可解决该问题.只有在尝试在该交换机本身的动作回调中调用[UISwitch setOn:]时,才应调度dispas_async.
dispatch_async(dispatch_get_main_queue(), ^{
[switch setOn:YES animated:YES];
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |