質問するログイン新規登録

質問編集履歴

1

ソースコードを開示しました。

2021/02/15 08:53

投稿

katw
katw

スコア1

title CHANGED
File without changes
body CHANGED
@@ -4,8 +4,72 @@
4
4
  ### 発生している問題
5
5
  ドロップ時(指を離した時)の処理の書き方がわかりません。
6
6
 
7
+ ### 該当のソースコード
8
+
9
+ ```Swift
10
+
11
+ import UIKit
12
+
13
+ class ViewController: UIViewController {
14
+
15
+ var button1x: CGFloat?
16
+ var button1y: CGFloat?
17
+ var button2x: CGFloat?
18
+ var button2y: CGFloat?
19
+
20
+ @IBOutlet weak var nowLabel: UILabel!
21
+
22
+ @IBOutlet weak var button1: UIButton!
23
+ @IBOutlet weak var button2: UIButton!
24
+
25
+ @IBOutlet weak var button1ConterX: NSLayoutConstraint!
26
+ @IBOutlet weak var button1ConterY: NSLayoutConstraint!
27
+
28
+ override func viewDidLoad() {
29
+ super.viewDidLoad()
30
+
31
+ button2x = button2.frame.origin.x
32
+ button2y = button2.frame.origin.y
33
+ }
34
+
35
+ @IBAction func button1Pan(_ sender: UIPanGestureRecognizer) {
36
+
37
+ //移動量を取得する。
38
+ let move:CGPoint = sender.translation(in: view)
39
+
40
+ //button1の位置の制約に移動量を加算する。
41
+ button1ConterX.constant += move.x
42
+ button1ConterY.constant += move.y
43
+
44
+ //画面表示を更新する。
45
+ view.layoutIfNeeded()
46
+
47
+ //変数に現在座標を入れる
48
+ button1x = sender.view!.frame.origin.x
49
+ button1y = sender.view!.frame.origin.y
50
+
51
+ nowLabel.text = "ドラッグ中です"
52
+
53
+ //移動量を0にする。
54
+ sender.setTranslation(CGPoint(x: 0, y: 0), in:view)
55
+ }
56
+
57
+ /* ドロップ時に書きたい処理
58
+ if button2x!-30 < button1x! && button2x!+30 > button1x! &&
59
+ button2y!-30 < button1y! && button2y!+30 > button1y! {
60
+ nowLabel.text = "button2上でドロップしました"
61
+ } else {
62
+ nowLabel.text = "ドロップしました"
63
+ }
64
+ */
65
+
66
+ }
67
+
68
+ ```
69
+
7
70
  ### 試したこと
8
71
  ドラッグ時、何をドラッグしているのかわかるようにしたかったので、Button1にUIPanGestureRecognizerをつけました。しかし、ドロップ時の処理がわかりませんでした。
72
+ (ソースコードはその時のものです。)
9
73
 
10
74
  なので、UIPanGestureRecognizerはあきらめて、ドラッグ中何をつかんでいるのか分からなくなってしまうのですが、TouchUpOutsideを使いました。しかし、指を離した位置の座標の取得方法がわかりませんでした。
11
75