UIScrollViewの上に置いたUILabelのタッチイベントを取得できません

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,653

ababab

score 57

UIScrollViewの上に置いたUILabelのタグをtouchesBeganで取得したいのですが、取得できません。
UIScrollViewの範囲外のself.viewのタグは取得できました。

どのように書けば良いでしょうか?
よろしくお願い致します。

myScrollView = UIScrollView()
        myScrollView.frame = CGRect(x: 10, y: 90, width: 300, height: self.view.frame.size.height)
        let myImageView = UIImageView()
        myImageView.frame = myScrollView.frame
        myImageView.contentMode = UIViewContentMode.scaleAspectFill
        myScrollView.addSubview(myImageView)
        myScrollView.backgroundColor = UIColor.gray
        myScrollView.isUserInteractionEnabled = true
        myScrollView.alpha = 0.3
        myScrollView.contentSize = CGSize(width:300, height:3800)

        for var i in 1...Array.count-1{

            let shopImageView = UIImageView(frame: CGRect(x: 10, y: 10+(i*100)-90, width: 80, height: 80))
            shopImageView.image = UIImage(named: "gosei_1.jpg")
            shopImageView.isUserInteractionEnabled = true
            shopImageView.tag = i
            myScrollView.addSubview(shopImageView)

            nameLabel = UILabel(frame: CGRect(x: 120, y: 10+(i*100)-90, width: 170, height: 38))
            nameLabel.backgroundColor = UIColor.white
            nameLabel.numberOfLines = 0
            nameLabel.textColor = UIColor.black
            nameLabel.isUserInteractionEnabled = true
            nameLabel.tag = i
            nameLabel.text = str2[Array[i]][0]
            nameLabel.textAlignment = NSTextAlignment.left
            nameLabel.adjustsFontSizeToFitWidth = true
            myScrollView.addSubview(nameLabel)

            addressLabel = UILabel(frame: CGRect(x: 120, y: 50+(i*100)-90, width: 170, height: 38))
            addressLabel.backgroundColor = UIColor.white
            addressLabel.numberOfLines = 0
            addressLabel.textColor = UIColor.black
            addressLabel.isUserInteractionEnabled = true
            addressLabel.tag = i
            addressLabel.text = str2[Array[i]][1]
            addressLabel.textAlignment = NSTextAlignment.left
            addressLabel.adjustsFontSizeToFitWidth = true
            myScrollView.addSubview(addressLabel)

        }


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

    for touch: AnyObject in touches {

        let t: UITouch = touch as! UITouch

        print("\(t.view?.tag)")

        if t.view?.tag == 1 {
             NSLog("Label touched")
        }

   }

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

これでは?
リンク内容

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/31 10:39

    superviewじゃなくてnextResponderに渡す方が良さそうですね。

    キャンセル

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

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる