Saya mencoba untuk melakukan itu selama beberapa hari sekarang, dan setelah membaca berton-ton orang yang mencoba melakukan itu juga, saya masih belum dapat sepenuhnya bekerja UITextField
di beberapa saya UITableViewCells
, seperti dalam contoh ini:
Entah saya memiliki formulir yang berfungsi tetapi teksnya tidak terlihat (walaupun saya mengatur warnanya menjadi biru), keyboard masuk ke lapangan ketika saya mengkliknya dan saya belum dapat mengimplementasikan acara keyboard dengan benar. Saya mencoba dengan banyak contoh dari Apple (terutama UICatalog
, di mana ada kontrol yang agak mirip) tetapi masih tidak berfungsi dengan benar.
Adakah yang bisa membantu saya (dan semua orang yang berusaha mewujudkan kontrol ini) dan memposting implementasi sederhana dari UITextField
a UITableViewCell
, yang berfungsi dengan baik?
CGRectMake(A_MAGIC_NUMBER, ANOTHER_MAGIC_NUMBER, YET_ANOTHER_HARDCODED_MAGIC_NUMBER, OH_HERES_ANOTHER_MYSTERIOUS_HARDCODED_MAGIC_NUMBER)
? Dari mana angka-angka itu berasal?Jawaban:
Coba ini. Bekerja seperti pesona bagi saya (di perangkat iPhone). Saya menggunakan kode ini untuk layar masuk sekali. Saya mengonfigurasi tampilan tabel untuk memiliki dua bagian. Tentu saja Anda dapat menyingkirkan persyaratan bagian.
Hasilnya terlihat seperti ini:
sumber
[_field addTarget:self action:@selector(editingEnded:) forControlEvents:UIControlEventEditingDidEnd];
.[cell addSubview:playerTextField];
untuk membuatnya berfungsi dengan iOS 5.0+.Berikut adalah solusi yang terlihat bagus di bawah iOS6 / 7/8/9 .
Pembaruan 2016-06-10: ini masih berfungsi dengan iOS 9.3.3
Terima kasih atas semua dukungan Anda, ini sekarang di CocoaPods / Carthage / SPM di https://github.com/fulldecent/FDTextFieldTableViewCell
Pada dasarnya kami mengambil stok
UITableViewCellStyleValue1
dan pokok diUITextField
manadetailTextLabel
seharusnya. Ini memberi kami penempatan otomatis untuk semua skenario: iOS6 / 7/8/9, iPhone / iPad, Gambar / Tidak-gambar, Aksesori / Tanpa-aksesori, Potret / Lanskap, 1x / 2x / 3x.Catatan: ini menggunakan storyboard dengan
UITableViewCellStyleValue1
sel tipe bernama "kata".sumber
UITableViewCellStyleRightDetail
maksud AndaUITableViewCellStyleValue1
?Inilah cara saya mencapai ini:
TextFormCell.h
TextFormCell.m
Ini mungkin tampak sedikit bertele-tele, tetapi berhasil!
Jangan lupa mengatur delegasi!
sumber
Coba yang ini. Ia juga dapat menangani pengguliran dan Anda dapat menggunakan kembali sel tanpa harus repot-repot menghapus subview yang Anda tambahkan sebelumnya.
sumber
Ini seharusnya tidak sulit. Saat membuat sel untuk tabel Anda, tambahkan objek UITextField ke tampilan konten sel
Tetapkan delegasi dari UITextField sebagai diri sendiri (yaitu viewcontroller Anda) Berikan tag ke bidang teks sehingga Anda dapat mengidentifikasi bidang teks mana yang diedit dalam metode delegasi Anda. Keyboard akan muncul ketika pengguna mengetuk bidang teks. Saya membuatnya bekerja seperti ini. Semoga ini bisa membantu.
sumber
CGRectZero
sebagai bingkai, pastikan Anda mengatur bingkai bidang teks Anda sebelum Anda menambahkannya ke hierarki tampilan. Mendapatkanframe
properti tampilan konten sel sangat membantu untuk tugas seperti itu.Detail
Kode Sampel Lengkap
Hasil
sumber
Saya telah menghindari ini dengan memanggil metode untuk menjalankan
[cell.contentView bringSubviewToFront:textField]
setiap kali sel saya muncul, tetapi kemudian saya menemukan teknik yang relatif sederhana ini:Tampaknya tidak memiliki masalah background-overpasting yang sama, dan itu menyelaraskan dirinya sendiri (agak). Juga, textLabel otomatis terpotong untuk menghindari meluap ke (atau di bawah) itu, yang berguna.
sumber
Saya mengalami masalah yang sama. Tampaknya pengaturan
cell.textlabel.text
properti membawa UILabel ke depan contentView sel. Tambahkan textView setelah pengaturantextLabel.text
, atau (jika itu tidak mungkin) panggil ini:sumber
Saya benar-benar kesulitan dengan tugas ini di iPad, dengan bidang teks yang muncul tidak terlihat di UITableView, dan seluruh baris berubah menjadi biru saat fokus.
Apa yang berhasil bagi saya pada akhirnya adalah teknik yang dijelaskan di bawah "Teknik untuk Konten Baris Statis" dalam Panduan Pemrograman Tabel Tampilan Apple . Saya meletakkan label dan textField dalam UITableViewCell di NIB untuk tampilan, dan menarik sel itu keluar melalui outlet masuk
cellForRowAtIndexPath:
. Kode yang dihasilkan jauh lebih rapi daripada UICatalog.sumber
Begini caranya, saya percaya cara yang benar. Ini berfungsi pada Ipad dan Iphone saat saya mengujinya. Kita harus membuat customCell kita sendiri dengan mengklasifikasikan uitableviewcell:
mulai di interfaceBuilder ... buat UIViewcontroller baru, sebut saja customCell (sukarelawan untuk xib saat Anda di sana) Pastikan customCell adalah subkelas uitableviewcell
hapus semua tampilan sekarang dan buat satu tampilan membuatnya seukuran sel individual. buat tampilan kustom subclass itu. sekarang buat dua tampilan lain (duplikat yang pertama).
Pergi ke inspektur koneksi Anda dan temukan 2 IBOutlet yang dapat Anda sambungkan ke tampilan ini sekarang.
-backgroundView -SelectedBackground
hubungkan ini ke dua tampilan terakhir yang baru saja Anda tiru dan jangan khawatir tentang mereka. tampilan pertama yang meluas customCell, letakkan label dan uitextfield di dalamnya. masuk ke customCell.h dan hubungkan label dan bidang teks Anda. Atur ketinggian tampilan ini untuk mengatakan 75 (tinggi setiap sel) semua selesai.
Di file customCell.m Anda, pastikan konstruktornya terlihat seperti ini:
Sekarang buat UITableViewcontroller dan dalam metode ini gunakan kelas customCell seperti ini:
}
sumber
Berikut adalah sub-kelas drop-in
UITableViewCell
yang menggantikan detailTextLabel dengan yang dapat dieditUITextField
(atau, dalam kasusUITableViewCellStyleDefault
, menggantikan textLabel ). Ini memiliki manfaat yang memungkinkan Anda untuk menggunakan kembali semua UITableViewCellStyles, aksesoriViews, dll., Sekarang detailnya dapat diedit!Mudah digunakan - cukup buat sel Anda seperti sebelumnya, tetapi sekarang gunakan cell.textField alih-alih cell.detailTextLabel (atau cell.textLabel jika
UITableViewCellStyleDefault
). misalnyaTerinspirasi oleh, dan diperbaiki, jawaban FD
sumber
Untuk peristiwa berikutnya / kembali pada beberapa UITextfield di dalam UITableViewCell dalam metode ini saya telah mengambil UITextField di storyboard.
Untuk mengambil teks dari bidang teks-
sumber