Xcode Swift - イベント
ボタン押したよイベント
viewDidLoadメソッドは、viewがロードされたときに呼ばれるメソッド。ここでイベントの設定できる。 btn1をTouchUpしたら押されたよとコンソールに表示するには下記のようにする。
override func viewDidLoad() { super.viewDidLoad() btn1.addTarget(self, action: "btn1TouchUp:", forControlEvents: .TouchUpInside)}
func btn1TouchUp(sender: UIButton){ println("押されたよ")}下記のようにremoveTargetで、イベントとの関連を消せる
sender.removeTarget(self, action: "btn1TouchUp:", forControlEvents: .TouchUpInside)ジェスチャーしたよイベント
UIGestureRecognizerというのを使うと、ジェスチャーを検知できる。
スワイプ
override func viewDidLoad() { super.viewDidLoad()
let swipeRightRecognizer = UISwipeGestureRecognizer(target: self, action: "swipeRightHandler:") swipeRightRecognizer.direction = .Right self.view.addGestureRecognizer(swipeRightRecognizer)}
func swipeRightHandler(ender: UISwipeGestureRecognizer){ println("right swipe")}回転
override func viewDidLoad() { super.viewDidLoad()
let rotateRecognizer = UIRotationGestureRecognizer(target: self, action: "rotateHandler:") self.view.addGestureRecognizer(rotateRecognizer)}
func rotateHandler(sender: UIRotationGestureRecognizer){ println("回転中 \(sender.rotation)")}タップとダブルタップ ダブルタップをすると最初にタップを検知し、次にダブルタップを検知する。ダブルタップだった場合タップを検知したくない場合は、requireGestureRecognizerToFailというのを使う。
override func viewDidLoad() { super.viewDidLoad()
let tapRecognizer = UITapGestureRecognizer(target: self, action: "tapHandler:") self.view.addGestureRecognizer(tapRecognizer)
let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "doubleTapHandler:") doubleTapRecognizer.numberOfTapsRequired = 2 self.view.addGestureRecognizer(doubleTapRecognizer)
tapRecognizer.requireGestureRecognizerToFail(doubleTapRecognizer)}
func tapHandler(sender: UITapGestureRecognizer){ println("Tap!")}
func doubleTapHandler(sender: UITapGestureRecognizer){ println("DoubleTap!")}画面のどこをタップしたのか知りたい
イベントを送ってきたやつはsenderというのですが、sender.locationInView(self.view)とやると、view内の位置を取得できる。
func tapHandler(sender: UITapGestureRecognizer){ let location = sender.locationInView(self.view) println("Tap! Location => (\(location.x), \(location.y))")}