我想和您談談SwiftUI中的TextField組件。它看起來像是基礎教程,但TextField具有令人興奮的功能,例如UIKit中沒有的即開即用Formatter功能。
TextField formatters
TextFieldStyle協議
本文價值與收獲
看完本文后,您將能夠作出下面的界面
看完本文您將掌握的技能
- 掌握TextField基礎功能
- 掌握formatters的使用設置不同格式
- 掌握TextField的不同風格
掌握TextField基礎功能
如您所知,我們可以使用TextField進行用戶輸入。我們需要做的就是創建一個TextField并將其分配給任何String值的Binding。讓我們來看一個非常簡單的例子。
struct ContentView: View {
@State private var text = ""
var body: some View {
TextField("type something...", text: $text)
}
}
在上面的示例中,我們創建一個帶有占位符的TextField并將其綁定到狀態變量。很簡單,對不對? TextField還提供了在用戶輸入期間可能需要處理的回調。
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事件。讓我們了解它們之間的區別。每當用戶開始或完成編輯文本時,TextField就會調用onEditingChanged關閉。它還傳遞一個描述開始或結束事件的布爾值。每當用戶執行諸如按回車鍵之類的操作時,TextField就會調用onCommit閉包。
TextField formatters
好的,我們學習了基礎知識,現在我們可以轉到TextFields的一個更有趣的功能。您可能會注意到,TextField有一些接受Formatter的重載。這些重載使我們可以將TextField綁定到原始數??據,并在使用選定的Formatter實例轉換為字符串后將其呈現。讓我們看一個簡單的例子,它將幫助我們了解它的工作原理.