【Swift】[27]親Viewからはみ出たコンポーネントを反応させる方法

約3ヶ月ぶりの投稿となってしまいました。。。

この3ヶ月間様々なことがありましたが、そういった日々でも細々とiOSアプリの開発を続けていました。

今回は、その開発をしている際に自身が困った事の一つ。

【親Viewからはみ出したコンポーネントのタッチ検出】

の実現方法を記載いたします。

まず、上記の「親Viewからはみ出たコンポーネント」がどういった状況下を説明いたしますと、、、

例としては下画像のようになっており、棒状のUIViewに加え、それにaddSubView()されている両隅の楕円の部分(UIButton)の状況を示しています。

この画像でタップ検出がされる部分は元々細い棒状の部分のみなのですが、

今回両隅の楕円部分全体も同様にタップ検出がされるようにするため、

下記のように実装をする事により実現出来たので実装部分を下記に紹介いたします。

class 親View: UIView {
:
    var leftMoveBorderButton = UIButton()
    var rightMoveBorderButton = UIButton()
:
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let convertedPushLeft: CGPoint = self.leftMoveBorderButton.convert(point, from: self)
        let convertedPushRight: CGPoint = self.rightMoveBorderButton.convert(point, from: self)

        if self.leftMoveBorderButton.bounds.contains(convertedPushLeft) {
            return self.leftMoveBorderButton.hitTest(convertedPushLeft, with: event)
        }else if self.rightMoveBorderButton.bounds.contains(convertedPushRight) {
            return self.rightMoveBorderButton.hitTest(convertedPushRight, with: event)
        }
        
        return super.hitTest(point, with: event)
    }
:
:
}

上記の関数は、親Viewのクラス内に記載しました。

コメントを残す

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