6

2本の指がiPhoneの画面に触れているが、1本だけが動いているとします。

TouchesMovedは1本の指(イベント)を表示します。

TouchesMovedが2本の指のどちらを参照しているのかを知るにはどうすればよいですか?

4

5 に答える 5

1

残念ながら、それについて考えると、1本の指を1つのタッチポイントに関連付ける「決定的な」方法はありません。結局のところ、iPhoneがサンプリングできるのは、指がグローバルに一意のIDを持っているということではありません。

あなたがする必要があるのは、とにかくピンチや他のものを管理するのに役立つ「前の」場所の記録を保持することです-そして前のタッチセットへの近さに基づいて各指にタグを付けます。

于 2009-08-10T16:56:12.943 に答える
1

自分のやりたいことができることを発見しました。iTunesU で Stanford の CS193P コースを確認してください。

于 2009-09-10T08:53:11.383 に答える
1

まず、でマルチタッチを有効にしますUIView

self.multipleTouchEnabled = true

次に、オブジェクトの辞書を保持しUITouchます。同じUITouchオブジェクトがtouchesBegantouchesMoved、およびに渡されtouchesEndedます。

var touchTypes = Dictionary<UITouch, Int>()

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.updateValue(i, forKey: touch as UITouch) //determine i for your own implementation
    }
}

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
    let type = touchTypes[touch] //depending on this value, do something
}

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.removeValueForKey(touchObject as UITouch)
    }
}
于 2014-10-19T00:03:08.700 に答える
0

NSSet *メソッドからタッチを取得しTouchesBeganます。後で識別できるように、すべてのタッチをループしてアプリのコンテキストに入れる必要があります。

あなたの意図を説明してくれれば、あなたを助けるのがはるかに簡単だったでしょう...

于 2009-08-10T17:11:01.573 に答える
0

あなたが書いた

TouchesMoved は 1 本の指 (イベント) のみを表示します。

しかし、これは実際には正しくありません。2 本の指が画面に触れていて、そのうちの少なくとも 1 本が動いている限り、両方のtouchesMovedでが得られます。

一時的に指がtouchesMoved1 本しかない場合は、指 1 本だけで電話がかかってくる可能性があるため、それについてどうするかを決める必要があります。

于 2009-08-11T04:26:33.377 に答える