質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1833閲覧

スクロールビューアニメーション中のタグ判定

aaaaaachannel

総合スコア37

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/02/16 05:40

スクロールビューがアニメーション中にtouchesbeganでタグを使った、タップ判定をしたいです。

swift

1 2func setBackGround(){ 3 4 5 // UIImage インスタンスの生成 6 // 画像はAssetsに入れてないのとjpgなので拡張子を入れます 7 let image:UIImage = UIImage(named:"background")! 8 9 // UIImageView 初期化 10 let imageView = UIImageView(image:image) 11 12 // 画面の横幅を取得 13 let screenWidth:CGFloat = view.frame.size.width 14 let screenHeight:CGFloat = view.frame.size.height 15 16 // 画像の中心を画面の中心に設定 17 imageView.center = CGPoint(x:screenWidth/2, y:screenHeight/2) 18 19 20// makenotes() 21 22// //ラベル 23 for i in 0..<5{ 24 let label = UILabel() 25 label.text = "ラベル(i)" 26 label.frame = CGRect(x:50,y:500+100*i,width:100,height:100) 27 label.tag = i+1 28 label.isUserInteractionEnabled = true 29 30 scrollView.addSubview(label) 31 } 32 33 // UIImageViewのインスタンスをビューに追加 34 self.view.addSubview(imageView) 35 36 } 37 38 func scroll(){ 39 scrollView.backgroundColor = UIColor.clear 40 // 表示窓のサイズと位置を設定 41 scrollView.frame.size = CGSize(width: view.frame.size.width, height: view.frame.size.height) 42 scrollView.center = self.view.center 43 scrollView.contentOffset = CGPoint(x:0,y:needsum-view.frame.size.height) 44 45 // 中身の大きさを設定 46 scrollView.contentSize = CGSize(width: view.frame.size.width, height: realNeedsum) 47 print(needsum) 48 49 // スクロールの跳ね返り 50 scrollView.bounces = false 51 52 53 54 // Delegate を設定 55 scrollView.delegate = self 56 57 // アニメーション処理 58 let withduration = 20.0 59 UIScrollView.animate(withDuration: TimeInterval(withduration), delay: 0, options: [.transitionCrossDissolve,.allowUserInteraction], animations: { 60 self.scrollView.frame = CGRect(x: 0, y: 0,width:self.view.frame.width,height:self.realNeedsum) 61 62 }) { _ in 63 64 } 65 66 self.view.addSubview(scrollView) 67 } 68 69 func scrollViewDidScroll(_ scrollView: UIScrollView) { 70 // スクロール中の処理 71 print("didScroll") 72 }

scrollviewを継承、タグの順にラベルを押せるようにしたい↓

swift

1class MyScrollView: UIScrollView { 2 3 4 5 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 6 7 superview?.touchesBegan(touches, with: event) 8 print("touchesBegan") 9 for touch: UITouch in touches { 10 let tag = touch.view!.tag 11 if tag == 1{ 12 print("touchfirst!") 13 UserDefaults.standard.set(tag,forKey: "int") 14 }else{ 15 let tag2 = UserDefaults.standard.integer(forKey: "int") 16 if tag == tag2 + 1 { 17 print("touchnext") 18 UserDefaults.standard.set(tag,forKey: "int") 19 } else { 20 print("miss") 21 } 22 23 } 24 25 26 } 27 }

止まった際には機能しますが、アニメーション中はtouchesbeganしか機能しません。アニメーション中にlabelで判定することはできないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問