TroubleShooting

[SwiftUI] Page View 이동 중 화면을 터치했을 때 binding이 잘못되는 이슈

Phililip
728x90

안녕하세요.

 

아래처럼 당근마켓의 탭 이동 UI를 SwiftUI로 직접 만들어봤는데요.

 

 

 

iOS 버그인지 제 코드 상의 버그인진 모르겠으나(iOS 버그라고 믿고 싶어요ㅠ) 1가지 이슈가 있었는데 그걸 공유해 볼까 해요.

 


ScrollViewReader & ScrollView & TabView를 사용하면 그럴싸하게 만들 수 있는데요.

 

 

 

여기서 하나 문제가 발생합니다...

 

ScrollView의 메뉴를 눌러서 TabView의 컨텐츠가 챠라락 움직이는 순간 화면을 터치하면, 선택한 메뉴와 현재 화면에 보이고 있는 TabView와 선택된 컨텐츠가 서로 달라지는 이슈가 있습니다.

 

 

 

page 스타일의 TabView 대신 LazyHStack 뷰를 사용하면 위 이슈를 해결할 수 있습니다.

(TabView는 뷰를 하나씩 넘기듯이 화면에 띄우는 방식이라면, LazyHStack 뷰는 화면에 보여줄 모든 뷰를 일렬로 쭉 나열해 놓고 화면 크기에 맞춰서 offset을 이동하는 개념이라고 이해하면 쉬워요!)

 

 

 

# 참고

https://swiftwithmajid.com/2019/12/25/building-pager-view-in-swiftui/

 

Building Pager view in SwiftUI

This week I want to continue the series of posts about building custom interactive views in SwiftUI. Today we will create a pager view. ScrollView in SwiftUI support only scrolling content and doesn’t have paging behavior. That’s why we will build a pa

swiftwithmajid.com

 


이번 글은 여기서 마무리.

 

 

 

반응형