まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

タップした座標を獲得し、特定の範囲内かどうか検出する

地味に大変だった・・・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
    }
    
       
    
}