fix(ios): replace community time picker with a custom wheel picker #12
No reviewers
Labels
No labels
bug
code
docs
duplicate
enhancement
help wanted
invalid
question
styles
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
uwayss/muhsin!12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/ios-time-picker-fix"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #9.
Replaces
@react-native-community/datetimepickerwith a custom in-house time picker to fix the iOS dismiss-on-first-drag bug.What changed:
src/components/WheelPicker.tsx(new): a reusable vertical wheel column built onreact-native-reanimated+ a plainScrollViewwithsnapToInterval. Items fade/scale by distance from center, and a tiny selection haptic fires each time the centered value changes while scrolling.src/features/settings/TimePickerModal.tsx(new): the reminder-time modal, using the app's existing centered-card modal style, with an hours/minutes wheel pair, a shared highlight bar, and Cancel/Done actions.src/screens/NotificationsScreen.tsx: swapped the communityDateTimePickerforTimePickerModal.src/core/utils/haptics.ts: addedtriggerSelectionHaptic.package.json/package-lock.json/app.json: removed the@react-native-community/datetimepickerdependency and its Expo config plugin entry.settings.donei18n string (en/ar).Follow-up fix: the wheels initially couldn't be scrolled at all. The card was wrapped in a nested
TouchableWithoutFeedback(only there to stop backdrop-dismiss taps from bubbling), which put the wheelScrollViews inside a Touchable's responder subtree — on iOS that Touchable claims the touch responder before the ScrollView can recognize the pan gesture. Fixed by making the backdrop aPressablesibling of the card instead of an ancestor, so drags on the wheels never pass through a touch-consuming parent.Verified with
tsc --noEmit,expo lint, andprettier --check— all clean. No access to a real iOS device in this environment, so the drag/haptics feel is worth a manual on-device check before merging.