1行のコードカウントダウンとボタンの重複クリック防止の原理
1273 ワード
1行のコードカウントダウンの例:
比較的簡単、demoアドレス
ボタンの重複クリック防止原理
ボタンをクリックすると、ボタンの下部に実装コードが表示されます.
潤runtimeを利用したmethod_ExchangeImplementationsメソッドは、下位実装を伴うメソッドを変更します.
demoアドレス
[_btn ss_countDown:3 title:@"s "];
比較的簡単、demoアドレス
ボタンの重複クリック防止原理
ボタンをクリックすると、ボタンの下部に実装コードが表示されます.
(_ action: Selector, to target: AnyObject?, for event: UIEvent?)
潤runtimeを利用したmethod_ExchangeImplementationsメソッドは、下位実装を伴うメソッドを変更します.
override open class func initialize() {
let a :Method = class_getInstanceMethod(self, #selector(UIButton.sendAction(_:to:for:)))
let b :Method = class_getInstanceMethod(self, #selector(UIButton.ss_sendAction(_:to:for:)))
method_exchangeImplementations(a, b)
}
func ss_sendAction(_ action: Selector, to target: AnyObject?, for event: UIEvent?) {
if self.ss_ignore_event {
return
}
if self.ss_accepet_time > 0 {
self.ss_ignore_event = true
self.perform(#selector(setter: ss_ignore_event), with: false, afterDelay: TimeInterval(self.ss_accepet_time))
}
self.ss_sendAction(action, to: target, for: event)
}
demoアドレス