【Swift】[27]親Viewからはみ出たコンポーネントを反応させる方法 投稿日: 2019年6月12日2020年4月21日 投稿者: Ediie 約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のクラス内に記載しました。 Related posts 【Swift】[18]アプリ内での写真、動画の使用許可状態の確認方法 【Swift】[10]画面上の複数のコンポーネントから特定のものを抜き出す方法 【Swift】[24]UIScrollViewをスクロールした際の処理を定義する方法