如何在Swift中将UITextField键盘类型更改为电子邮件
在objective-c中,我可以说:如何在Swift中将UITextField键盘类型更改为电子邮件,swift,uitextfield,Swift,Uitextfield,在objective-c中,我可以说: [self.promoTextField setKeyboardType:UIKeyboardTypeEmailAddress]; 我试着用谷歌搜索它,但只是找到了在objective-c中实现它的方法 UITextField采用的一个协议说它仍然存在: optional var keyboardType: UIKeyboardType { get set } 所有键盘类型的列表如下: 试试这个: 斯威夫特3 Swift
[self.promoTextField setKeyboardType:UIKeyboardTypeEmailAddress];
我试着用谷歌搜索它,但只是找到了在objective-c中实现它的方法 UITextField采用的一个协议说它仍然存在:
optional var keyboardType: UIKeyboardType { get set }
所有键盘类型的列表如下:
试试这个:
斯威夫特3
Swift<3
在Swift 3中尝试:
let emailTextField: UITextField = {
let text = UITextField()
text.keyboardType = .emailAddress
return text
}()
在Swift 3
中,您可以使用:
youremailfieldname.keyboardType=UIKeyboardType.emailAddress
注意电子邮件地址中的小写
注意:您还可以在TextField
故事板中的定义
您只需将条目类型设置为要更改的文本字段即可。
e、 g
有时给UITextField扩展添加一个方法,你可以像那样使用“textField.chooseKeyboardType(keyboardType:.pad)”,也许这不是一个好方法,但很有用
public extension UITextField {
func chooseKeyboardType(_ keyboardType:UIKeyboardType) {
switch keyboardType {
case .emailAddress:
self.keyboardType = .emailAddress
case .twitter:
self.keyboardType = .twitter
case .numberPad:
self.keyboardType = .numberPad
case .numbersAndPunctuation:
self.keyboardType = .numbersAndPunctuation
case .asciiCapable:
self.keyboardType = .asciiCapable
case .URL:
self.keyboardType = .URL
case .decimalPad:
self.keyboardType = .decimalPad
case .namePhonePad:
self.keyboardType = .namePhonePad
default:
self.keyboardType = .default
}
}
}
不知道为什么,但为了获得最佳体验,我还必须设置一些其他属性
TextField(“电子邮件”,文本:$Email)
.keyboardType(.emailAddress)
.autocapitalization(UITextAutocapitalizationType.none)
.disableAutocorrection(真)
您也可以这样使用速记:self.promoTextField.keyboardType=.EmailAddress
如果需要更改当前聚焦的文本字段的keyboardType而不从第一响应程序辞职,则必须在更改keyboardType后调用reloadInputViews()。示例:self.promoTextField.reloadInputViews()是否有人知道为什么第一次设置会起作用,但对于后续设置,您必须将.keyboardType
更改为其他类型,然后再重新设置?此答案不会对已存在的答案添加任何新内容。其他答案不包括故事板选项,所以谢谢你我最近发现你可以让操作系统建议这样的电子邮件地址
self.promoTextField.keyboardType = UIKeyboardType.EmailAddress
let emailTextField: UITextField = {
let text = UITextField()
text.keyboardType = .emailAddress
return text
}()
self.yourlTextField.keyboardType = .emailAddress //shows keyboard with e-mail characters
self.yourTextField.keyboardType = .phonePad ////shows phone pad only..just numbers
public extension UITextField {
func chooseKeyboardType(_ keyboardType:UIKeyboardType) {
switch keyboardType {
case .emailAddress:
self.keyboardType = .emailAddress
case .twitter:
self.keyboardType = .twitter
case .numberPad:
self.keyboardType = .numberPad
case .numbersAndPunctuation:
self.keyboardType = .numbersAndPunctuation
case .asciiCapable:
self.keyboardType = .asciiCapable
case .URL:
self.keyboardType = .URL
case .decimalPad:
self.keyboardType = .decimalPad
case .namePhonePad:
self.keyboardType = .namePhonePad
default:
self.keyboardType = .default
}
}
}