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()

 

 

ytw_developer