Skip to content

Instantly share code, notes, and snippets.

@networkextension
Last active December 6, 2016 06:59
Show Gist options
  • Select an option

  • Save networkextension/748058f181b4b2a4c4b15cc88fb0f96c to your computer and use it in GitHub Desktop.

Select an option

Save networkextension/748058f181b4b2a4c4b15cc88fb0f96c to your computer and use it in GitHub Desktop.
UIButton imp demo
import UIKit
class SFTargetAction: NSObject {
var target:NSObject
var action:Selector
var event:UIControlEvents
init(_ t:NSObject,a:String,e:UIControlEvents) {
target = t
action = NSSelectorFromString(a)
event = e
}
}
class MyButton: UIView {
var targetActions:[SFTargetAction] = []
func addTarget(_ target: Any?, action: String, for controlEvents: UIControlEvents){
let t = SFTargetAction.init(target! as! NSObject, a:action , e: controlEvents)
targetActions.append(t)
}
func sendAction(_ event:UIControlEvents){
for t in targetActions {
//support mutil envents
if (t.event.rawValue & event.rawValue) == event.rawValue{ {
let action = t.action
t.target.perform(action, with: self)
}
}
}
}
class ViewController: UIViewController {
@IBOutlet weak var myButton: UIButton!
@IBOutlet weak var testButton: MyButton!
@IBAction func testAction(_ sender: Any) {
print("mybtn tabped")
}
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
testButton.addTarget(self, action: "testAction2:", for: UIControlEvents.touchUpInside)
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func testAction2(_ sender: Any) {
print("mybtn tabped2")
}
func refresh(_ text:String) {
textView.text = text
let e = UIControlEvents.touchUpInside
testButton.sendAction( e)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment