2017-12-03 9 views
1

ダブルクリックを使いたいです。私はdoubleTap関数を書いています。指の位置を知る方法は?機能で指の位置を検出する方法

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap") 
    doubleTap.numberOfTapsRequired = 2 
    doubleTap.numberOfTouchesRequired = 1 
    view.addGestureRecognizer(doubleTap) 
} 
func doubleTap() 
{ 

} 

答えて

0

あなたはタッチの位置を取得するためにlocation(ofTouch:in:)を使用することができ、パラメータ

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(doubleTapFunc)) 
    doubleTap.numberOfTapsRequired = 2 
    doubleTap.numberOfTouchesRequired = 1 
    view.addGestureRecognizer(doubleTap) 
} 

func doubleTapFunc(_ sender: UITapGestureRecognizer) 
{ 
    // Use 'sender' here to get the location 
    if sender.state == .ended { 
     // handling code 
     let location = sender.location(ofTouch: 0, in: self.view!) 
    } 
} 
+1

'#selector'構文を使用してください。それはあなたのコードで今すぐ持っている無効なセレクタでエラーを見つけるでしょう:) – Sulthan

+0

、@ありがとう@サルーン、修正 – Yitzchak

+0

私はコードをコンパイルできません。 '#selector'の引数が変数 'doubleTap'を参照できません – Vladislav

1

として、ジェスチャー認識を得ることができます。ただし、場所にアクセスする関数内からジェスチャ認識機能にアクセスする必要があるため、クラスのインスタンスプロパティとしてdoubleTapを宣言する必要があります。

class YourViewController: UIViewController { 
    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(YourViewController.doubleTap)) 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     doubleTap.numberOfTapsRequired = 2 
     doubleTap.numberOfTouchesRequired = 1 
     view.addGestureRecognizer(doubleTap) 
    } 
    func doubleTap(){ 
     let touchLocation = doubleTap.location(ofTouch: numberOfTouches-1,in: nil) 
    } 
} 

変更機能への入力パラメータあなたはサブビューの相対位置を取得したい場合は、最初または最後のタッチの位置を取得する必要があるかどうか変更したい場合。

+0

'UIGestureRecognizer'を' doubleTap'関数のパラメータとして取得することもできます。そして、あなたは '#selector'構文を使うべきです。 – Sulthan

+0

@ Suulthanが私の答えを更新しました。私はOPのコードをコピーしましたが、そうです。セレクタの構文を修正しておく必要があります。レコグナイザをパラメータとして送信することは、別の可能性でもあります。 –

関連する問題