【Swift】[29] 2つ重ねたUIViewの内、下のUIViewのみ反応させる方法

また久々の更新になってしまいましたが、

今回は自分が開発している時にも利用した

UIViewを二つ重ねた時に下UIViewのみタッチ処理を有効にする方法

を記載します。

自分が利用した場面としては、

ブラウザアプリ内でブルーライトカットの機能を実装する際、

透過させたオレンジ色のUIViewを上に重ねた部分で利用しました。

他にも利用できる場面があると思うので良かったらお使い下さい。

 

該当コード

class {UIViewクラス名}: UIView {
:
:
    //この部分がタッチ時の当たり判定をしています
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
            return false
    }
:
:
}

説明

上記コードのpoint(inside point: CGPoint, with event: UIEvent)にて

UIViewへタッチした際、返り値Bool型を返すことによって当たり判定しています。

したがって、その返り値の部分を全てfalseで返すことによって当たり判定自体を無効化することができます。

その事により、下のUIViewに伝搬されるような仕組みです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です