【Xcode】後ろのViewにイベントを渡す

久々にiOSプログラム。というか、アップデートのための修正。
似たような画面だったので使いまわしていたのだが、よく考えたらそんな挙動はその画面ではしないという。事に気づいた。どのようなものだかここでは伏せときます。

で、メインとなるViewの上にUIViwewを乗せてそこにUIButtonなど配置。
いざ動かすと、ボタンは反応するがその後ろが反応しない。

isUserInteractionEnabled = false

とするも今度は後ろのViewは反応するものの手前のボタンが反応しない。
あぁ、面倒くさい。

結果、

class PassthroughView: UIView {
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let view = super.hitTest(point, with: event)
        return view == self ? nil : view
    }
}

というのを作成しそこからUIviewを作って配置。

あら、見事想定した動きに。

もともとのコード自体が数年前なので色々アップデートしないといけないのだけど、面倒くさいよねぇ。
まぁ、以前と違うことはChatGPTなどAIがあるのである程度のヒントなどはもらえることだ。

上記のサンプルはperplexity.aiに聞いたもの。ChatGPTだとまた別の回答が。
個人的にこちらのほうが使いやすそうなので採用。

そのプログラムの修正、テスト、残すために本ブログ執筆。という作業中に聴いていた音楽

パックマン チャンピオンシップエディション サウンドトラックス(2CD) アマゾン
SWEEP RECORDさん(https://sweeprecord.com/srin-1147/)から購入すると2024/08/11現在特典のイラストシール(同梱)&ラバーストラップがついてますね。

2500円以上で送料無料なので2024/08/11時点ではアマゾンよりお得かな。