我想和您談?wù)凷wiftUI中的TextField組件。它看起來(lái)像是基礎(chǔ)教程墨坚,但TextField具有令人興奮的功能祟剔,例如UIKit中沒(méi)有的即開即用Formatter功能于宙。
本文價(jià)值與收獲
看完本文后,您將能夠作出下面的界面
看完本文您將掌握的技能
- 掌握TextField基礎(chǔ)功能
- 掌握f(shuō)ormatters的使用設(shè)置不同格式
- 掌握TextField的不同風(fēng)格
掌握TextField基礎(chǔ)功能
如您所知吁峻,我們可以使用TextField進(jìn)行用戶輸入滑负。我們需要做的就是創(chuàng)建一個(gè)TextField并將其分配給任何String值的Binding。讓我們來(lái)看一個(gè)非常簡(jiǎn)單的例子用含。
struct ContentView: View {
@State private var text = ""
var body: some View {
TextField("type something...", text: $text)
}
}
在上面的示例中矮慕,我們創(chuàng)建一個(gè)帶有占位符的TextField并將其綁定到狀態(tài)變量。很簡(jiǎn)單啄骇,對(duì)不對(duì)痴鳄? TextField還提供了在用戶輸入期間可能需要處理的回調(diào)。
struct ContentView: View {
@State private var text = ""
var body: some View {
TextField(
"type something...",
text: $text,
onEditingChanged: { _ in print("changed") },
onCommit: { print("commit") }
)
}
}
如您在上面的示例中看到的缸夹,TextField允許我們處理onEditingChanged和onCommit事件夏跷。讓我們了解它們之間的區(qū)別哼转。每當(dāng)用戶開始或完成編輯文本時(shí),TextField就會(huì)調(diào)用onEditingChanged關(guān)閉槽华。它還傳遞一個(gè)描述開始或結(jié)束事件的布爾值壹蔓。每當(dāng)用戶執(zhí)行諸如按回車鍵之類的操作時(shí),TextField就會(huì)調(diào)用onCommit閉包猫态。
TextField formatters
好的佣蓉,我們學(xué)習(xí)了基礎(chǔ)知識(shí),現(xiàn)在我們可以轉(zhuǎn)到TextFields的一個(gè)更有趣的功能亲雪。您可能會(huì)注意到勇凭,TextField有一些接受Formatter的重載。這些重載使我們可以將TextField綁定到原始數(shù)??據(jù)义辕,并在使用選定的Formatter實(shí)例轉(zhuǎn)換為字符串后將其呈現(xiàn)虾标。讓我們看一個(gè)簡(jiǎn)單的例子,它將幫助我們了解它的工作原理.