60745


touchMovedなどで取得した値を他のfuncなどに値を渡したい場合、どの様にしたら良いのでしょうか。  
例えば以下の様なコードのpositionの値を他のfuncで扱いたい場合です。

[code]

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch = touches.first {
            for coalescedTouch in event!.coalescedTouches(for: touch)! {
                let position = coalescedTouch.location(in: self)
                print(position.x, position.y)
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2019-11-21T02:09:27.113
60713
2019-11-26T13:30:13.593
2019-11-21T15:55:48.957
3060
14780
question
swift ios
touchesMovedなどでのタッチイベント時に取得した値を他のfuncで使用したい


まだまだよくわからない点があるので、あなたの期待する回答にはなっていないかもしれませんが、その場合にはコメント等でお知らせください。

「他のfuncなどに値を渡したい」のであれば、その値を保持するインスタンスプロパティをクラス内に持つのが一番妥当でしょう。

あなたのコード例をそのまま使うとこんな感じになります。

[code]

    class MyView: UIView {
    
        var positions: [CGPoint]? //<-インスタンスプロパティを定義
    
        override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
            if let touch = touches.first {
                positions = [] //空配列で初期化
                for coalescedTouch in event!.coalescedTouches(for: touch)! {
                    let position = coalescedTouch.location(in: self)
                    print(position.x, position.y)
                    positions?.append(position) //値を追加
                }
            }
        }
    }
    
[/code]

(`positions`に値を設定すればいいだけならfor-inは要らないのですが、とりあえずそのままにしておきます。)

後は`positions`プロパティを読み取れば良いだけなので、同じクラス内の「他のfunc」から普通にアクセスできますし、`MyView`のインスタンスにアクセスできるなら別クラスからでも`theView.positions`みたいな感じでアクセスできます。

(追記)コメントに書いたように、最初の1個だけアクセスできれば良いのなら、こんな感じです。

[code]

            if let position = theView.positions?.first {
                print(position) //<-`position`は`CGPoint`型
            } else {
                print("positions not ready")
            }
    
[/code]


CC BY-SA 4.0
2019-11-21T20:31:29.883
60745
2019-11-26T13:30:13.593
2019-11-26T13:30:13.593
13972
13972
60713
answer