iOS Swift: 在键盘上显示UITextFields的邮件地址建议

问题描述 投票:3回答:1

在我们的一个iOS iPhone应用中,我们需要在注册过程中显示用户配置的电子邮件地址作为建议。有几个应用程序可以在键盘的输入附件视图中以固定按钮的形式显示电子邮件地址。例如Yelp应用(iPhone 8与iOS 13.4)。

Yelp on iPhone 8 running iOS 13.4

我想不通如何用内置手段启用这个功能。我试着将textContentType、keyboardType和autocorrectionType设置为正确的值,就像我能找到的关于这个主题的其他堆栈溢出文章中描述的那样。

这是我的代码

    override func viewDidLoad() {
    super.viewDidLoad()

    let email = UITextField(frame: CGRect(x: 10, y: 60, width: 300, height: 40))
    email.placeholder = "Enter email address here"
    email.font = UIFont.systemFont(ofSize: 15)
    email.borderStyle = UITextField.BorderStyle.roundedRect
    email.clearButtonMode = UITextField.ViewMode.whileEditing
    email.contentVerticalAlignment = UIControl.ContentVerticalAlignment.center
    email.returnKeyType = .continue

    email.keyboardType = .emailAddress
    email.textContentType = .emailAddress
    email.autocorrectionType = .yes
    email.autocapitalizationType = .none

    view.addSubview(email)
}

这就是我在运行Yelp应用时,在同一台iOS 13.4的iPhone 8上的样子。

Test App on the same iPhone 8 running iOS 13.4

没有电子邮件地址的建议。

奇怪的是,同样的App在我的iPad上运行时也会显示建议,但方式不同。

Test App on iPad Pro running iOS 13.3

我如何才能像Yelp那样显示用户的电子邮件地址?是否有一个特殊的UITextField视图我必须使用,或者有其他方法来获得电子邮件地址并在自定义文本附件视图中显示它们?

谢谢您的帮助

ios swift uitextfield inputaccessoryview email-address
1个回答
1
投票

经过一些研究的其他应用程序,有正确的行为,我发现了一个解决方案,上面的问题。

苹果在后台做了一点小魔术,称为 "启发式",但苹果没有描述它。

我们的问题是,只有一个UITextField要求提供电子邮件地址,没有上下文。

这就需要做。

  1. 给View Controller起一个类似 "Register "的名字。
  2. 在View Controller中拥有一个textContentType = .emailaddress的UITextField。
  3. 在View Controller中拥有一个textContentType=.password的UITextField,这个UITextField是不隐藏的,并且在创建注册View Controller的时候是可以编辑的。

我们的解决方案是将密码文本字段隐藏在电子邮件文本字段下面。密码文本字段必须在电子邮件文本字段下面至少一个点,才能使其可编辑。我们只是在email和password之间放了一个视图来隐藏它。

编辑或选择电子邮件地址后,我们动画式地将密码文本字段移到电子邮件文本字段的下方。

这个开始融化了我的大脑,但至少我们找到了一个适合我们的解决方案。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.