在我们的一个iOS iPhone应用中,我们需要在注册过程中显示用户配置的电子邮件地址作为建议。有几个应用程序可以在键盘的输入附件视图中以固定按钮的形式显示电子邮件地址。例如Yelp应用(iPhone 8与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上的样子。
没有电子邮件地址的建议。
奇怪的是,同样的App在我的iPad上运行时也会显示建议,但方式不同。
我如何才能像Yelp那样显示用户的电子邮件地址?是否有一个特殊的UITextField视图我必须使用,或者有其他方法来获得电子邮件地址并在自定义文本附件视图中显示它们?
谢谢您的帮助
经过一些研究的其他应用程序,有正确的行为,我发现了一个解决方案,上面的问题。
苹果在后台做了一点小魔术,称为 "启发式",但苹果没有描述它。
我们的问题是,只有一个UITextField要求提供电子邮件地址,没有上下文。
这就需要做。
我们的解决方案是将密码文本字段隐藏在电子邮件文本字段下面。密码文本字段必须在电子邮件文本字段下面至少一个点,才能使其可编辑。我们只是在email和password之间放了一个视图来隐藏它。
编辑或选择电子邮件地址后,我们动画式地将密码文本字段移到电子邮件文本字段的下方。
这个开始融化了我的大脑,但至少我们找到了一个适合我们的解决方案。