前提・実現したいこと
長押しでViewを作成し,指をドラッグするとそのViewも移動させたいです.
その前段階として,ドラッグ中に座標を取得したいです.
swift
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 // ロングプレス 5 let longPressGesture = 6 UILongPressGestureRecognizer(target: self, 7 action: #selector(HeadItemViewController.longPress(_:))) 8 longPressGesture.delegate = self 9 //パン 10 let panGesture = UIPanGestureRecognizer(target: self, action: #selector(HeadItemViewController.panView(sender:))) 11 panGesture.delegate = self 12 13 // Viewに追加. 14 self.collectionView.addGestureRecognizer(longPressGesture) 15 self.collectionView.addGestureRecognizer(panGesture) 16 } 17 18 19@objc func longPress(_ sender: UILongPressGestureRecognizer){ 20 21 if sender.state == .began { 22 print("LongPress began") 23 } 24 else if sender.state == .ended { 25 print("Longpress ended") 26 } 27 } 28 29 @objc func panView(sender: UIPanGestureRecognizer) { 30 //移動後の相対位置を取得 31 let location: CGPoint = sender.translation(in: self.view) 32 print(location) 33 }
理想はこれで,コンソールに
LongPress began
〜ドラッグ中の座標〜
Longpress ended
と表示されることです.
現時点での現象
長押しを検知した場合に,panGestureが起動されず座標が取得できません.
長押しが行われてないときには,pangestureは起動しx,y座標共に取得できます.
の方のように,同時検出の方法を試しましたが,これだと両方のジェスチャーが検知されなくなってしまいました.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/29 00:56