2017-04-18 20 views
1

UIViewの色を、現在タッチしているタッチの数に基づいて変更したいとします。UIViewに触れる指の数を取得する

class colorChangerViewClass: UIView { 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     setColor(color: .blue) 
     print("touchesBegan") 
    } 

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     setColor(color: .green) 
     print("touchesEnded") 
    } 


    func setColor(color: UIColor) { 
    self.backgroundColor = color 
    } 
} 

私はマルチタッチを実装するのに苦労しています。私はここで何かを理解していないように感じる。

UIViewには、現在何本の指が触れているかを確認するプロパティがありますか?

新しいtouchesBeganまたはtouchesEndedが発生するたびに確認できます。

答えて

4

まず、あなたのUIViewクラスからのイベントで、すべてのタッチを得ることができ、あなたのタッチイベント関数内

self.isMultipleTouchEnabled = true 

その後、あなたのサブクラスでマルチタッチを有効にします。

let touchCount = event?.touches(for: self)?.count 
+0

'イベント.touchesを変更しますか?'のUIView – Marmelador

+0

上のタッチの量をUITouchセットを返し、ない私は再びカウントチェックを追加するのを忘れてください – abdullahselek

+0

I新しい問題が発生しました:UIViewから2本の指を離すと、それが1つのイベントとしてカウントされます。したがって、 'touchesEnded'をトリガしますが、' event?.touches(for:self)?count'に対して問い合わせると '2'を返します。 したがって、UIViewに2本の指を持たせてその1つを持ち上げることと区別できないようにします。 – Marmelador

1

UIViewisMultipleTouchEnabled = trueを持っていることを確認し、デフォルトはfalseです。

は、その後(のために:自己)touchesBegan方法

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     setColor(color: .blue) 
     let touchCount = event?.touches(for: self)?.count 
    } 
関連する問題