11924


画面をタッチされた時に反応するタッチビギャンイベントなのですが、  
下記のジャンプ先であるfunc dangen内などでも使いたいです。  
しかし、なぜか二つ目のタッチイベントはオーバーライドを消せと言われてしまいます。

タッチイベントを別のfuncの中では使えないのでしょうか？

[code]

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        for touch: AnyObject in touches {
            // タッチされた位置にあるものを調べて
            let location = touch.locationInNode(self)
            let touchNode = self.nodeAtPoint(location)
    
            // もし、ボタンなら
            if touchNode == aLabel {
                self.dangeon()
            }
    
            //ショップへ
            if touchNode == bLabel {
               self.shop()
            }
        }
    }
    
    func shop(){
        override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
            for touch: AnyObject in touches {
                // タッチされた位置にあるものを調べて
                let location = touch.locationInNode(self)
                let touchNode = self.nodeAtPoint(location)
    
                // もし、ボタンなら
                if touchNode == cLabel {
                    self.next()
                }
            }
        }
    }
    
[/code]


CC BY-SA 3.0
2015-06-30T13:50:42.563
11899
2015-07-01T07:19:04.243
2015-06-30T21:04:05.750
7362
10353
question
swift
swift1.1のタッチイベントについて


> タッチイベントを別のfuncの中では使えないのでしょうか？

はい、使えません。  
ご提示のコードから推測できる、あなたがやりたいプログラムは、関数の基本に立ち返れば、引数に値を渡して、引き継ぎをするということになると思います。

以下のサンプルコードは、ビュー上に5つの`UILabel`があり、それのいずれかをタップすると、6つめの`UILabel`インスタンス`resultLabel`に、何番目のラベルがタップされたかを、表示します。

**ViewController.swift**

[code]

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet weak var labelA: UILabel!
        @IBOutlet weak var labelB: UILabel!
        @IBOutlet weak var labelC: UILabel!
        @IBOutlet weak var labelD: UILabel!
        @IBOutlet weak var labelE: UILabel!
        @IBOutlet weak var resultLabel: UILabel!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // ラベルのtagに、一意に決まる整数値を与える。
            labelA.tag = 1
            labelB.tag = 2
            labelC.tag = 3
            labelD.tag = 4
            labelE.tag = 5
        }
    
        override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
            self.selectNumber(touches) // touchesBeganの引数を、そのままselectNumber()の引数に渡す。
        }
    
        func selectNumber(touches: Set<NSObject>) {
            // ひとつのタッチを取得。
            let theTouch = touches.first as! UITouch
            // 最初にタッチイベントを受け取ったUIViewインスタンスを取得。
            let touchedView = theTouch.view
            // そのタグの値をresultLabelに表示する。
            resultLabel.text? = "The selected number = \(touchedView.tag)"
        }
    
    }
    
[/code]


CC BY-SA 3.0
2015-07-01T06:48:47.230
11924
2015-07-01T07:19:04.243
2015-07-01T07:19:04.243
7362
7362
11899
answer