gpt4 book ai didi

ios - UIControl.appearance().addTarget 停止在 Swift 4 上工作

转载 作者:行者123 更新时间:2023-11-29 00:09:51 25 4
gpt4 key购买 nike

当我从 Swift 3.2 切换到 Swift 4.0 时,我的代码停止工作。它的目标是向所有 UIButton 和 UISwitch 添加点击操作。

private func turnSound(state: Bool) {
UIButton.appearance().isSoundEnabled = state
UISwitch.appearance().isSoundEnabled = state
}
extension UIControl {
var isSoundEnabled: Bool {
get {
return target(forAction: #selector(AudioManager.playStandardClickSound), withSender: nil) != nil ? true : false
}
set {
if newValue {
addTarget(AudioManager.manager, action: #selector(AudioManager.playStandardClickSound), for: .touchUpInside)
} else {
removeTarget(AudioManager.manager, action: #selector(AudioManager.playStandardClickSound), for: .touchUpInside)
}
}
}
}

之前它工作得很好,但现在我遇到了一个异常:

'NSInvalidArgumentException', reason: '*** Illegal axis type, : for appearance setter, addTarget:action:forControlEvents:. Expected NSInteger or NSUInteger'

而且我不明白如何摆脱这个问题。

很乐意提供任何帮助或替代解决方案。

更新:

最佳答案

您还需要将 @objc 添加到您的扩展中:

@objc extension UIControl

附言此答案归功于 https://stackoverflow.com/a/44391389/2241008

关于ios - UIControl.appearance().addTarget 停止在 Swift 4 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46810392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com