UISwitch 的奇怪行为

Posted

技术标签:

【中文标题】UISwitch 的奇怪行为【英文标题】:Weird behavior of the UISwitch 【发布时间】:2020-08-10 09:59:29 【问题描述】:

我的 Switch 动画卡在打开和关闭之间。它发生在开关超出屏幕边界后(开关位于表格视图单元格内)。如果我不让单元格超出屏幕范围,我就不会遇到这个问题。我设置了断点来弄清楚发生了什么,并意识到这发生在我更改开关值的那一刻。下面的 GIF 是为了更好地理解我的意思。第一个显示了我想要修复的行为。第二个没问题。

[

【问题讨论】:

请分享您的tableview和switch代码 【参考方案1】:

我设法自己解决了这个问题。我没有发布代码,因为代码太多,我可以在这里发布。但如果有人有同样的问题 - 这里是解决方案。

事实证明,当单元格被重复使用时(单元格离开屏幕),所有内容都不会从中删除。在它们再次出现在屏幕上后,我最终将多个开关堆叠在一起。我所做的只是在初始化新开关之前将 switch.removeFromSuperview() 添加到我的 cell.set 方法中。

 func setSwitch() 
    switchControl?.removeFromSuperview()
    lockedPic.removeFromSuperview()
    switchControl = CustomSwitch(number: self.tag)
    contentView.addSubview(switchControl!)
    
    NSLayoutConstraint.activate([
        switchControl!.leadingAnchor.constraint(equalTo: self.trailingAnchor, constant: -61),
        switchControl!.centerYAnchor.constraint(equalTo: self.centerYAnchor)
    ])

【讨论】:

以上是关于UISwitch 的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

如何使任意 UIAccessibilityElement 的行为类似于 VoiceOver 的 UISwitch?

UITableViewCell 中的 UISwitch

UITableView 奇怪的行为

滚动时 TableViewCell 中的 Swift 3 UISwitch 丢失状态

IOS UISwitch 控件

UipanGesture 不适用于 Uiswitch