Post

Replies

Boosts

Views

Activity

Reply to How to determine tap position on image in SwiftUI?
I'm new to coding, but here goes. This is a single guitar string. It has 24 "frets" - the GuitarFretView(). I then stack 5-9 of these strings in a VStack (adjustable via settings). The GuitarFretView is basically a line that adds a circle when you tap. Still working on it, will also need to update the data model when tapped. struct GuitarStringView: View {     let guitarString = Array(repeating: GuitarFretView(), count: 24)     var body: some View {         HStack {             ForEach(0 ..< 24) { item in                 guitarString[item]             }         }         .frame(maxHeight: 36, alignment: .center)     } } struct GuitarFretView: View {     @State var tapped = false     var body: some View {         ZStack {             Path { path in                 path.move(to: CGPoint(x:0, y: 18))                 path.addLine(to: CGPoint(x: 50, y: 18))             }             .stroke(lineWidth: 3)             .onTapGesture {                 withAnimation {                 tapped.toggle()                 }             } // appears when the string is tapped             Circle()                 .fill(self.tapped ? Color.gray : Color.clear)                 .frame(width: 30, height: 30)                 .onTapGesture {                     withAnimation {                     tapped.toggle()                     }                 }         } // ZSTACK     } } The method I found on Stack Overflow forums for getting the position is below. It worked, but then I was blocked from using the swipe for moving between tabs. .simultaneousGesture(DragGesture(minimumDistance: 0, coordinateSpace: .local)                .onEnded { print("X position \($0.location)") }) Thanks for any guidance!
Dec ’20
Reply to How to determine tap position on image in SwiftUI?
Thanks. Yeah, I clicked the solved by accident then could not turn it off. I don't need a way to determine the position of the tap IF I can use the stacks method for Views. I will use one design or the other. Ah, thanks for the pointer on the code block. I will use that. For the VStack, imagine stacking the guitar strings: VStack { GuitarStringView() GuitarStringView() GuitarStringView() GuitarStringView() GuitarStringView() GuitarStringView() } So now we have 6 GuitarStringViews times 24 of the GuitarFretViews. It might be OK if that was the only combination, but if you have one of these full "guitars" in each page of a TabView, or if you add/delete a string it is very slow to update the UI. I don't think this design will work.
Dec ’20
Reply to How to determine tap position on image in SwiftUI?
Thanks OOPer. I would rather not share ALL the code 😬😊. I was not aware that they don’t recommend generating views from arrays. I saw documentation that indicated that was what the ForEach was for. I know there is a limit of 10 child views so maybe generating 24 x 6 is too much. If we go back to the original question, is there any way to get the tap location in SwiftUI or do you need to use UIKit?
Dec ’20