diff --git a/VoidLink/Input/InputAccessoryBar.swift b/VoidLink/Input/InputAccessoryBar.swift index d135dc0a..cac2519e 100644 --- a/VoidLink/Input/InputAccessoryBar.swift +++ b/VoidLink/Input/InputAccessoryBar.swift @@ -41,6 +41,7 @@ private enum InputAccessoryBarMetrics { static let releaseDuration: TimeInterval = 0.18 static let reorderAnimationDuration: TimeInterval = 0.2 static let deleteButtonSize: CGFloat = 22 + static let deleteButtonHitExpansion: CGFloat = 10 static let dragScale: CGFloat = 1.06 static let dragLiftY: CGFloat = -2 static let editOverlayDimAlpha: CGFloat = 0.001 @@ -48,6 +49,17 @@ private enum InputAccessoryBarMetrics { static let edgeAutoScrollStep: CGFloat = 6 } +@available(iOS 13.0, *) +private final class InputAccessoryDeleteButton: UIButton { + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + let expandedBounds = bounds.insetBy( + dx: -InputAccessoryBarMetrics.deleteButtonHitExpansion, + dy: -InputAccessoryBarMetrics.deleteButtonHitExpansion + ) + return expandedBounds.contains(point) + } +} + @available(iOS 13.0, *) private struct InputAccessoryBarButtonRecord { let buttonLabel: String @@ -396,7 +408,7 @@ private final class InputAccessoryCapsuleButton: UIButton { @available(iOS 13.0, *) private final class InputAccessoryBarItemView: UIView { let button: InputAccessoryCapsuleButton - let deleteButton = UIButton(type: .system) + let deleteButton = InputAccessoryDeleteButton(type: .system) var deleteHandler: (() -> Void)? init(title: String) {