Sheet에서 2~3초 이상 컴포넌트를 눌렀을 때 동작하는 경우가 있습니다
해당 문제는 NavigationLink 또는 DatePicker 등 여러 곳에서 발생할 수 있습니다. 이번에 다룰 내용은
sheet 내부에서 DatePicker 를 눌렀음에도 불구하고 2~3초 이상 누르지 않는다면 DatePicker를 focus할 수 없는 문제를 해결한 내용입니다.
해결 전 코드
아래는 발생하게 됐던 코드입니다. 간결하게 body를 구현하였으며 별다른 문제는 없어보였습니다.
VStack {
headerSection
Divider()
contentSection
Spacer()
}
@ViewBuilder private var contentSection: some View {
VStack(spacing: 10) {
dateSection
Divider()
categorySection
Divider()
titleSection
Divider()
marchantsSection
Divider()
amountSection
}
}
@ViewBuilder private var dateSection: some View {
HStack {
DatePicker("날짜", selection: .constant(convertToDate(from: gpt.result?.date ?? "") ?? Date()), displayedComponents: [.date, .hourAndMinute])
.datePickerStyle(.compact)
Spacer()
}
.padding(.horizontal)
}
해결 코드
해결 코드는 매우 간단했습니다. VStack 을 지우는 것입니다. VStack 내부에 다른 Stack의 뷰에 DatePicker 를 넣었을 경우 원하는 대로 동작하지 않을 수 있으며 이번 경우에는 2~3초 이상 누르지 않았을 때 DatePicker를 선택할 수 없다는 것을 알 수 있었습니다.
headerSection
Divider()
contentSection
Spacer()
'SwiftUI > 에러해결' 카테고리의 다른 글
SwiftUI - onChange 클로저 내부로 값 변경, 관찰 변경 안될 때 (0) | 2024.09.13 |
---|---|
SwiftUI - MapUserLocationButton 작동 안될 때 (2) | 2024.09.10 |
SwiftUI - Global functions are not supported in this predicate (SwiftData 에러) (0) | 2024.09.01 |
SwiftUI - Observable 여러 뷰에서 데이터 업데이트 안됨 (0) | 2024.08.21 |
SwiftUI - ChatGPT 에 이미지 전송 안됨 (0) | 2024.08.10 |