Guideline 4.0
Guideline 4.0 - Design: Touch Targets Too Small
Our Take
Apple rejected your app because one or more interactive elements have tappable areas smaller than the recommended 44×44 point minimum. Small touch targets cause accidental taps on adjacent controls, frustrate users with larger fingers, and are especially problematic for users with motor accessibility needs. This rejection is common in dense list views, toolbars with many icons, and custom controls built without adequate hit areas.
Resolution Guide
**Ensure a minimum 44×44pt tappable area** — Apple's Human Interface Guidelines specify 44×44 points as the minimum touch target size. This applies to buttons, links, toggles, and any other interactive element.
**Expand hit areas without changing visual size** — You don't need to make the icon or text visually larger. In SwiftUI, use `.contentShape(Rectangle())` on a padded container:
```swift
Button(action: { dismiss() }) {
Image(systemName: "xmark")
.font(.caption)
.frame(minWidth: 44, minHeight: 44)
.contentShape(Rectangle())
}
```
**In UIKit, override point(inside:with:)** — For custom controls that need a larger hit area than their visual bounds:
```swift
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
bounds.insetBy(dx: -10, dy: -10).contains(point)
}
```
**Add spacing between adjacent targets** — When multiple buttons sit side by side, add at least 8pt spacing between their tappable areas to prevent mis-taps.
**Audit with Accessibility Inspector** — Use Xcode's Accessibility Inspector to visualize tap targets and identify undersized elements.
**Test with large fingers in mind** — Use the simulator's touch indicator to verify tappability, but also test on a physical device with your thumb to catch real-world usability issues.
**Mention specific fixes in reviewer notes** — List which elements you resized and their new tap target dimensions when resubmitting.
Example Rejection Email
Consider Appealing
Appeals are unnecessary — this is a quick fix. If you believe your touch targets already meet the 44pt minimum, measure them precisely using Accessibility Inspector and provide the measurements in your Resolution Center reply.
Before & After
// Tiny 20x20pt button — fails Apple's 44pt minimum
Button(action: { dismiss() }) {
Image(systemName: "xmark")
.font(.system(size: 12))
}
.frame(width: 20, height: 20)
// Visual size stays small, tappable area meets 44pt minimum
Button(action: { dismiss() }) {
Image(systemName: "xmark")
.font(.system(size: 12))
.frame(minWidth: 44, minHeight: 44)
.contentShape(Rectangle())
}
What changed: The icon remains visually small (12pt), but the tappable area expands to 44×44 points via .frame(minWidth:minHeight:) and .contentShape(Rectangle()). This satisfies Apple's requirements without changing the design.
// UIKit: button with intrinsicContentSize too small
class SmallButton: UIButton {
override var intrinsicContentSize: CGSize {
return CGSize(width: 24, height: 24)
}
}
// UIKit: minimum touch target enforced via intrinsicContentSize
class AccessibleButton: UIButton {
override var intrinsicContentSize: CGSize {
let size = super.intrinsicContentSize
return CGSize(
width: max(size.width, 44),
height: max(size.height, 44)
)
}
}
What changed: Override intrinsicContentSize to enforce a 44×44pt minimum while preserving the natural content size when it's already large enough. This ensures Auto Layout always allocates adequate tap target space.
Community Solutions · 0
Sign in to share your solution.
More Guideline 4 (Design) rejections
- Guideline 4.0 - Design: App Does Not Include iOS Features
- Guideline 4.0 - Design: App Looks Like a Website
- Guideline 4.0 - Design: Apple Pay Button Not Following Guidelines
- Guideline 4.0 - Design: Blurry Icons or Low-Resolution Assets
- Guideline 4.0 - Design: Broken Layout on iPad
- Guideline 4.0 - Design: Content Clipped by Notch or Safe Area