タップした座標を獲得し、特定の範囲内かどうか検出する
地味に大変だった・・・UIImageViewに画像を配置した状態でも検知しました。
以下は、
・UIImageViewに画像を表示、タッチ後一瞬画像が変わる(タッチされたことが分かるように)
・タッチされた座標を取得
・タッチされた位置が特定の範囲内かどうか検出する
→iPhoneの画面を18分割し、タッチされた位置が特定の範囲に入っているならその座標と18分割のどこかを表示、入っていなければはみだしてると表示
です。
switch文で「どこからどこまでならこうしなさい」って書けるのがすごく便利。for文もそうだけど、Swiftは見た目きれいなコードなのでありがたいです。
あ、なぜかはてなだとバックスラッシュが円マークになっちゃってるので、そこだけバックスラッシュに直してください。
import UIKit class ViewController: UIViewController { @IBOutlet weak var touchPointPic: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. touchPointPic.image = UIImage(named: "iPhone4ViewPic.png") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //以下タッチ処理 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { //タッチされたら直後に画像が一瞬変わる touchPointPic.image = UIImage(named: "iPhone4ViewPic2.png") //タッチした位置の座標を取得 for touch: AnyObject in touches { let point = touch.locationInView(self.view) //座標獲得 let pointXY = (point.x,point.y) /* 座標獲得、分けて書く場合 let pointX = point.x let pointY = point.y */ //条件分岐 switch pointXY { case (0.0...105.0, 0.0...70.0): println("\(point) だよ、1ばんめ") case (105.0...213.0, 70.0...141.0): println("\(point) だよ、5ばんめ") default: println("\(point) はみだしてる") } } } override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { //タッチ直後、画像がもどる touchPointPic.image = UIImage(named: "iPhone4ViewPic.png") } //ステータスバー隠す override func prefersStatusBarHidden() -> Bool { return true } }