如何在Swift中将UITextField键盘类型更改为电子邮件

如何在Swift中将UITextField键盘类型更改为电子邮件,swift,uitextfield,Swift,Uitextfield,在objective-c中,我可以说: [self.promoTextField setKeyboardType:UIKeyboardTypeEmailAddress]; 我试着用谷歌搜索它,但只是找到了在objective-c中实现它的方法 UITextField采用的一个协议说它仍然存在: optional var keyboardType: UIKeyboardType { get set } 所有键盘类型的列表如下: 试试这个: 斯威夫特3 Swift

在objective-c中,我可以说:

[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
    }
}
}