UISwipeGestureRecognizer
我正在构建简单的主题引擎,并希望有一个扩展UIViewController
这是我的代码:
protocol Themeable {
func themeDidUpdate(currentTheme: Theme) -> Void
}
extension Themeable where Self: UIViewController {
func switchCurrentTheme() {
Theme.switchTheme()
themeDidUpdate(Theme.currentTheme)
}
func addSwitchThemeGestureRecognizer() {
let gestureRecognizer = UISwipeGestureRecognizer(target: self, action:#selector(Self.switchCurrentTheme))
gestureRecognizer.direction = .Down
gestureRecognizer.numberOfTouchesRequired = 2
self.view.addGestureRecognizer(gestureRecognizer)
}
}
当然编译器找不到#selector(Self.switchCurrentTheme)
,因为它不是通过@objc
指令公开的。是否可以将此行为添加到我的扩展程序中?
更新: Theme
是一个 Swift 枚举,所以我不能在协议@objc
前面添加Themeable