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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

397閲覧

違うViewControllerから追加したViewのジェスチャー検知を行いたい

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2020/06/30 08:49

前提・実現したいこと

VCAとVCBの2つのVIewcontrollerがあります.
VCAの画面半分ははContainerViewでVCBを表示しています.

VCBからVCAに

swift

1let longPressGesture2 = UILongPressGestureRecognizer(target: self,action: #selector(test(_:))) 2longPressGesture2.delegate = self 3 4self.parent?.view.addSubview(ImageView)

のようにジェスチャーを追加したView(VCBにてパン機能を付けているので移動可能)
を追加しています.

ここから,VCA内に置かれたViewを長押ししたらtest()を発火させたいです.

発生している問題・エラーメッセージ

VCAに置き,長押しをしても反応してくれません.

どうすれば,VCAにて長押しされたことを検知できるでしょうか.

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

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

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

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

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

guest

回答2

0

ベストアンサー

view.isUserInteractionEnabled = true
を設定して,追加すれば反応しました.

どうやら,viewのインターフェース設定が出来ていなかったため
反応しなかったようです.

投稿2020/07/02 14:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/07/02 14:35

view.isUserInteractionEnabled = trueにすれば、質問文のコードで動いたのでしょうか? またpanGestureは機能しているのに、isUserInteractionEnabledがfalseだったということですか? なにがなんだかわかりませんが、解決してよかったですね。
退会済みユーザー

退会済みユーザー

2020/07/10 02:15

> 質問文のコードで動いたのでしょうか? 質問,回答,どちらでも動きました. 私も後者のことで気になったので,原因を見たところ, どうやら,最初にパン機能をつけたのはあくまでもView全体であって, 追加したViewではなかったようです. (Viewから取得した座標に移動していただけ) 初心者のため,勘違いをしておりました. ご協力,ありがとうございました.
退会済みユーザー

退会済みユーザー

2020/07/10 06:01

ビルドできるわけないから。何言ってるのかわからなかったけど、 >VCAにて長押しされたことを検知できるでしょうか. 前提である質問文が間違ってて、VCAじゃなくて、VCBで検知してるのね。
guest

0

親viewのtest(_:)と書けばよいのでは?


追記

swift

1let hugaView = UIView() 2// 諸々設定 3let gesture = UILongPressGestureRecognizer(target: self.parent as? HogeVC, action: #selector((self.parent as? HogeVC)?.test())) 4gesture.delegate = self 5hugaView.addGestureRecognizer(gesture) 6self.parent?.view.addSubview(hugaView) 7 8class HogeVC: UIViewController { 9 10 @objc func test() { 11 } 12 13} 14

追記

サンプル

投稿2020/06/30 11:09

編集2020/06/30 22:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/06/30 11:40

回答有難うございます。 let longPressGesture2 = UILongPressGestureRecognizer(target: self,action: #selector(VCA.test(_:))) ってことですよね?? 残念ながら、動きませんでした……。
退会済みユーザー

退会済みユーザー

2020/06/30 12:02 編集

Aが何かは書いてないのでわかんないですが、parentじゃないの? アウトレット接続はされてないんでしょ
退会済みユーザー

退会済みユーザー

2020/06/30 17:50

VCAとVCBは別ファイルに書かれているViewcontrollerです. VCAは,VCBを子ビューとして保持していますのでparentです. アウトレット接続はされていません. VCB内に,ご教授頂いたコードを書いてみたのですが残念ながら動きませんでした. (エラーは出ません)
退会済みユーザー

退会済みユーザー

2020/06/30 22:15 編集

ところで、なにが「残念ながら」なの? なんか私が教えてもらってるように感じますけど。 面倒なのでサンプルあげときました。
退会済みユーザー

退会済みユーザー

2020/07/01 18:39

不快に思わせてしまったようで申し訳ありません。 しかし、「残念ながら」と言ったのは結果が「解決できた」ではないことに対しての枕言葉であり、そのような思いをさせたい訳で使用したのではないことをご理解頂けたら幸いです。 改めまして、重ね重ねのご回答と、サンプルのご提示有難うございます。 Viewをどの層に置こうがイベント時に実行するのは同じファイルに書いて良いと分かったのも勉強になりました。 本当に有難うございました。 この度は、お力を貸して頂いたにも関わらず、不快な思いをさせてしまい申し訳ありませんでした。
退会済みユーザー

退会済みユーザー

2020/07/01 21:38

フィードバックが、「コードを書いてみた」と「残念ながら動きませんでした」と「エラーは出ません」だけというのは、どうなんでしょうか? 挙句の果てに ありがとうと感謝の言葉は書いてありますが、 回答を見てどういったコードを書いたのか?、なぜ動かなかったのか?、今現在も動いてないのか?、解決したのか?、何も教えてくれないのは残念です。 あなたは、インターネット上にある具体的なコードを解説した記事を参考にしていませんか? 感謝の気持がもしあるなら、あとから読む人のためにご自身の経験を具体的にここに書いてみようとは思いませんか?
退会済みユーザー

退会済みユーザー

2020/07/02 07:17

コードは,名前等は変えておりますが, //諸々の設定の場所に view = UIImageView(frame: CGRect(x: tapPoint.x,y: tapPoint.y, width: 168, height: 90)) view.center = CGPoint(x:tapPoint.x y:tapPoint.y) view.image = image と記述したものであとは変えずに書いてみていました. 結果は依然として「反応しない」でした. 反応はしませんが,エラーやクラッシュすることはありません. サンプルの方はまだ試せていない状況なので,わかりません. 現状に関しては,動いていません. 後日,サンプルと比較してまた,問題把握に努めます. ご報告に関して,至らないところばかりですみません.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問