这是一段代码,一半已被 comments , 在第一部分中,数组中的文本元素位于VStack中,并且每个元素都出现在新行中.但单击它时会显示有关单击的数组元素的详细信息. 但在第二部分中,文本在段落中连接并可见.但单击后,它无法显示所单击元素的详细信息. 我只需要文本的段落表示和每个元素可点击. 这里是代码
//import SwiftUI
//
//struct ContentView: View {
// let dummyStrings = [
// "Lorem ipsum dolor sit amet*",
// "consectetur adipiscing elit*",
// "sed do eiusmod tempor incididunt*",
// "ut labore et dolore magna aliqua*",
// "Ut enim ad minim veniam*",
// "quis nostrud exercitation ullamco*",
// "laboris nisi ut aliquip ex ea commodo consequat*",
// "Duis aute irure dolor in reprehenderit*",
// "in voluptate velit esse cillum dolore*",
// "eu fugiat nulla pariatur*"
// ]
//
// var body: some View {
// ScrollView {
// VStack(alignment: .leading, spacing: 10) {
// // Concatenate all strings into a single continuous text
// Text(dummyStrings.joined(separator: " "))
// .font(.body)
// .foregroundColor(.blue)
// .modifier(ClickableText(lines: dummyStrings) { string in
// print("Clicked:", string)
// })
// }
// .padding()
// }
// }
//}
//
//// View modifier to make each line of text individually tappable
//struct ClickableText: ViewModifier {
// let lines: [String]
// let action: (String) -> Void
//
// func body(content: Content) -> some View {
// // Use GeometryReader to determine the size of each line of text
// GeometryReader { proxy in
// VStack(spacing: 0) {
// ForEach(lines, id: \.self) { line in
// Text(line)
// .onTapGesture {
// action(line)
// }
// .frame(width: proxy.size.width, alignment: .leading)
// .contentShape(Rectangle()) // Make whole Text area tappable
// }
// }
// }
// }
//}
//
//struct ContentView_Previews: PreviewProvider {
// static var previews: some View {
// ContentView()
// }
//}
//
//------------------For Testing use -------------------
import SwiftUI
struct ContentView: View {
let dummyStrings = [
"1Lorem ipsum dolor sit amet",
"2consectetur adipiscing elit",
"3sed do eiusmod tempor incididunt",
"4ut labore et dolore magna aliqua",
"5Ut enim ad minim veniam",
"6quis nostrud exercitation ullamco",
"7laboris nisi ut aliquip ex ea commodo consequat",
"8Duis aute irure dolor in reprehenderit",
"9in voluptate velit esse cillum dolore",
"10 eu fugiat nulla pariatur"
]
var body: some View {
let concatenatedText = dummyStrings.joined(separator: " ")
return ScrollView {
Text(concatenatedText)
.font(.body)
.foregroundColor(.blue)
.lineSpacing(5)
.onTapGesture {
// Handle tap gesture here (e.g., print tapped portion)
print("Text tapped")
}
.padding()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}