UIControl.appearance().addTarget 停止在 Swift 4 上工作
Posted
技术标签:
【中文标题】UIControl.appearance().addTarget 停止在 Swift 4 上工作【英文标题】:UIControl.appearance().addTarget stopped working on Swift 4 【发布时间】:2017-10-18 12:39:02 【问题描述】:当我从 Swift 3.2 切换到 Swift 4.0 时,我的代码停止工作。它的目标是为所有 UIButtons 和 UISwitches 添加点击操作。
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'
而且我不明白如何摆脱这个问题。
很乐意提供任何帮助或替代解决方案。
更新:
added sample project【问题讨论】:
【参考方案1】:您还需要将@objc
添加到您的扩展程序中:
@objc extension UIControl
附:归功于这个答案https://***.com/a/44391389/2241008
【讨论】:
就是这样。非常感谢!以上是关于UIControl.appearance().addTarget 停止在 Swift 4 上工作的主要内容,如果未能解决你的问题,请参考以下文章
C6678+K7+AD9253/AD9783 8路AD高速信号处理板