From bccd90e8af12a9837653918e6d14933e6decc7d2 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Dec 2022 12:05:06 -0600 Subject: [PATCH] updated to use protocol for buttonable Signed-off-by: Matt Bruce --- .../Buttons/ButtonGroup/ButtonGroup.swift | 33 ++----------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/VDS/Components/Buttons/ButtonGroup/ButtonGroup.swift b/VDS/Components/Buttons/ButtonGroup/ButtonGroup.swift index c5645211..1362d68d 100644 --- a/VDS/Components/Buttons/ButtonGroup/ButtonGroup.swift +++ b/VDS/Components/Buttons/ButtonGroup/ButtonGroup.swift @@ -84,7 +84,7 @@ open class ButtonGroup: View, UICollectionViewDataSource, UICollectionViewDelega $0.translatesAutoresizingMaskIntoConstraints = false $0.dataSource = self $0.delegate = self - $0.register(ButtonCollectionViewCell.self, forCellWithReuseIdentifier: "collectionViewCell") + $0.register(ButtonGroupCollectionViewCell.self, forCellWithReuseIdentifier: "collectionViewCell") } }() @@ -166,13 +166,12 @@ open class ButtonGroup: View, UICollectionViewDataSource, UICollectionViewDelega public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let button = buttons[indexPath.row] - guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell", for: indexPath) as? ButtonCollectionViewCell else { return UICollectionViewCell() } + guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell", for: indexPath) as? ButtonGroupCollectionViewCell else { return UICollectionViewCell() } cell.subviews.forEach { $0.removeFromSuperview() } cell.addSubview(button) cell.buttonable = button button.pinLeading() button.pinTrailing() - cell.buttonIntrinsicContentSize = button.intrinsicContentSize button.centerYAnchor.constraint(equalTo: cell.centerYAnchor).isActive = true return cell } @@ -195,31 +194,3 @@ open class ButtonGroup: View, UICollectionViewDataSource, UICollectionViewDelega } - -public class ButtonCollectionViewCell: UICollectionViewCell { - - var buttonIntrinsicContentSize: CGSize = .zero - var buttonable: Buttonable? - - open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { - // Create a minimumHitArea variable with a value that represents the minimum size of the hit area you want to create for the button. - let minimumHitArea = CGSize(width: buttonIntrinsicContentSize.width, height: 44) - - // Create a new hitFrame variable that is the same size as the minimumHitArea variable, but is centered on the button's frame. - let hitFrame = CGRect( - x: self.bounds.midX - minimumHitArea.width / 2, - y: self.bounds.midY - minimumHitArea.height / 2, - width: minimumHitArea.width, - height: minimumHitArea.height - ) - - // If the point that was passed to the hitTest(_:with:) method is within the hitFrame, return the button itself. This will cause the button to handle the touch event. - if hitFrame.contains(point) { - return buttonable - } - - // If the point is not within the hitFrame, return nil. This will cause the touch event to be handled by another view. - return nil - } - -}