在 SwiftUI 中,keyboardType 是一个修饰符,用于指定 TextField 或 SecureField 使用的键盘类型。这有助于优化用户的输入体验,根据输入内容自动调整虚拟键盘的布局。
功能
通过为 keyboardType 设置合适的值,应用可以提供更直观和便捷的输入方式。例如,输入邮箱时显示带 @ 和 . 的键盘,输入数字时只显示数字键盘。
常见的键盘类型及其用途
keyboardType 接受一个枚举值 UIKeyboardType(在 UIKit 中)或其 SwiftUI 的等效值。
1).default:默认键盘。
2).asciiCapable:ASCII 字符键盘,仅支持英文字符输入。
3).numbersAndPunctuation:包含数字和标点符号的键盘。
4).URL:URL 键盘,带有快捷输入字符,如 / 和 .。
5).emailAddress:邮箱键盘,带有 @ 和 . 的快捷键。
6).decimalPad:数字小数点键盘,仅包含数字和小数点(无负号)。
7).numberPad:数字键盘,仅包含数字(适合电话或金额输入)。
8).phonePad:电话号码键盘。
9).namePhonePad:包含姓名和电话号码输入的键盘。
10).twitter:推特优化键盘,带 @ 和 # 快捷键。
11).webSearch:优化用于搜索的键盘。
示例代码
以下是一些简单的示例,展示不同 keyboardType 的用法:
1、邮箱输入
import SwiftUI
struct ContentView: View {
@State private var email: String = ""
var body: some View {
TextField("请输入邮箱", text: $email)
.keyboardType(.emailAddress) // 邮箱键盘
.padding()
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
2、数字输入
import SwiftUI
struct ContentView: View {
@State private var phoneNumber: String = ""
var body: some View {
TextField("请输入电话号码", text: $phoneNumber)
.keyboardType(.numberPad) // 数字键盘
.padding()
.textFieldStyle(RoundedBorderTextFieldStyle())
}
}
注意事项
1、与 textContentType 配合使用
设置 keyboardType 和 textContentType 修饰符一起使用,可以进一步优化用户体验。例如,输入邮箱时,可以同时设置:
2、设备行为
某些键盘类型可能在模拟器中表现不同,请在真实设备上进行测试。
3、数字键盘的完成按钮
某些键盘(如 .numberPad 和 .decimalPad)默认没有完成按钮。可以通过 toolbar 修饰符或结合第三方键盘扩展来添加完成按钮。