Published on

SwiftUI-da TextSelection β€” matnni tanlash

Authors

Hammaga xush kelibsiz! Mening ismim Nick, bu β€” Swiftful Thinking kanali.

Bu videoda textSelection modifier-ini ko'ramiz. Bu iOS 15 da qo'shilgan yangilik bo'lib, foydalanuvchiga ilovadagi matnni tanlash, nusxalash va ulashish imkonini beradi. Va bularning barchasi atigi bitta qator kod bilan amalga oshadi.


Yangi fayl yaratish

Navigatorda o'ng tugma bosib yangi SwiftUI fayli yarating. Uni TextSelectionBootcamp deb nomlang va Create tugmasini bosing. Canvas-da Resume bosing.


.textSelection() β€” bitta qator

struct TextSelectionBootcamp: View {
    var body: some View {
        Text("Hello, world!")
            .textSelection(.enabled)
    }
}

Faqat shu bitta qator. Endi foydalanuvchi matn ustida bosib tursa, "Copy" va "Share" tugmalari paydo bo'ladi.


.enabled va .disabled

// Tanlash yoqilgan (standart β€” o'chiq)
Text("Bu matnni nusxalash mumkin")
    .textSelection(.enabled)

// Tanlash o'chirilgan (standart holat)
Text("Bu matnni nusxalab bo'lmaydi")
    .textSelection(.disabled)

Barcha Text elementlari standart holatda disabled β€” foydalanuvchi tanlay olmaydi. enabled qo'shilgandagina tanlash mumkin bo'ladi.


VStack yoki List bilan birga

.textSelection() ni butun bir container-ga berish mumkin β€” ichidagi barcha matnlar tanlanadigan bo'ladi:

struct TextSelectionBootcamp: View {
    var body: some View {
        VStack(spacing: 20) {
            Text("Birinchi xabar β€” tanlash mumkin")
            Text("Ikkinchi xabar β€” tanlash mumkin")
            Text("Uchinchi xabar β€” tanlash mumkin")
        }
        .textSelection(.enabled)
    }
}

Hozircha foydalanuvchi faqat bosib turgan bitta Text elementini tanlaydi. Bir nechta elementni bir vaqtda tanlash hali qo'llab-quvvatlanmaydi.


Qachon ishlatiladi?

  • Chat ilovalar β€” foydalanuvchi xabarni nusxalab do'stiga yubormoqchi
  • Maqola yoki blog β€” qiziqarli parchani nusxalash
  • Kod ko'rsatuvchi ilovalar β€” kodni nusxalash
  • Istalgan joy β€” foydalanuvchi matnni nusxalashi mumkin bo'lishi kerak bo'lsa

To'liq kod

struct TextSelectionBootcamp: View {
    var body: some View {
        VStack(spacing: 20) {
            Text("Bu matnni bosib turing β€” nusxalashingiz mumkin!")
                .textSelection(.enabled)
                .font(.headline)
                .multilineTextAlignment(.center)
                .padding()

            Text("Bu matnni tanlab bo'lmaydi.")
                .textSelection(.disabled)
                .foregroundColor(.gray)
        }
        .padding()
    }
}

Xulosa

Bu videoda o'rgandik:

  • .textSelection(.enabled) β€” foydalanuvchiga matnni tanlash imkonini beradi
  • .textSelection(.disabled) β€” matn tanlanmaydi (standart holat)
  • Bitta modifier butun VStack yoki List ichidagi barcha matnga ta'sir qiladi
  • iOS 15 dan boshlab mavjud
  • Avval bu funksiyani qo'shish murakkab edi β€” endi bir qator kod yetarli

Rahmat tomosha qilganingiz uchun! Men β€” Nick, bu Swiftful Thinking. Keyingi videoda ko'rishamiz!

Buy mea coffee