如何在 Swift 中的 UITextField 下显示错误
Posted
技术标签:
【中文标题】如何在 Swift 中的 UITextField 下显示错误【英文标题】:How to display error under UITextField in Swift 【发布时间】:2018-11-01 13:22:00 【问题描述】:我想在 UItextfield 下显示错误,并且文本字段的边框颜色变为红色。 这该怎么做?非常感谢
【问题讨论】:
到目前为止你尝试过什么?这并不难。您通常如何显示文本。在这里也做同样的事情。您可以通过谷歌搜索轻松了解如何更改边框颜色。 您可以通过在UITextField
下添加UILabel
来做到这一点,例如如果您的UITextField
未完成验证,则将错误文本设置为UILabel
,或者如果验证则设置""
文本UILabel
或者如果您不想这样做,那么您可以实现许多现成的库。
@RakeshaShastri 就这么简单。我只是想到内置函数可以帮助我做到这一点。抱歉,我只是 Swift 的初学者
@VũTinhPhan 上面的评论解释了你需要做什么。尽管您可以更改他所说的保持标签始终存在的位置。我建议您在必要时添加和删除标签。
@Kuldeep 谢谢
【参考方案1】:
旁注:您可以使用外部库来执行我将要向您展示的内容。但是,我相信对于刚接触 Swift 的人来说,这段代码可以提供一些关于正确使用该语言进行移动开发的见解。此外,过度使用外部库通常不是好的做法,因为当添加更多依赖项时,您的项目会增加大小,从而导致编译速度变慢并占用设备上的更多内存。尽可能使用 Swift 的标准库和内置功能。
好的,所以我们必须首先设置一条错误消息。这很容易通过创建一个新的UILabel
来完成。我不知道您是否使用故事板来创建 UI 元素,但在下面的代码中,我只是假设您以编程方式创建了所有内容。
注意如果不满足某个条件(在这种情况下,如果@ 987654325@ 为空)。
另外,请注意我如何使用UITextFieldDelegate
的方法didBeginEditing(...)
来重置textField
的边框颜色并再次隐藏errorMessage
。
class viewController: UIViewController, UITextFieldDelegate
private let textField = UITextField()
private let errorMessage = UILabel()
private let submitButton = UIButton()
override viewDidLoad()
super.viewDidLoad()
/* setup your UI elements here */
setupTextField()
setupErrorMessage()
setupSubmitButton()
func setupTextField()
/* setup your text field here (you did this already) */
func setupErrorMessage()
/* Here, I am using AutoLayout to lay out the errorMessage on the screen.
If you used storyboard, delete every line in this function except where
we set the message to hidden */
errorMessage.translatesAutoResizingMaskIntoConstraints = false
errorMessage.text = "Error Message"
errorMessage.textColor = .red
errorMessage.isHidden = true
self.addSubView(errorMessage)
NSLayoutConstraints.activate([
textField.leadingAnchor.constraint(equalTo: textField.leadingAnchor),
textField.topAnchor.constraint(equalTo: textField.bottomAnchor, constant: 10.0)
])
func setupSubmitButton()
/* setup your submit button here (you did this already) */
submitButton.addTarget(self, action: #selector(submitButtonPressed(_ :)), for: .touchUpInside)
@objc func submitButtonPressed()
if textField.text.isEmpty
errorMessage.isHidden = false
textField.layer.borderColor = .red
/* use a UITextFieldDelegate method to change the textField's border color
to blue again after the user has corrected the mistake
(for example, after the user starts typing into the textField again) */
func textFieldDidBeginEditing(_ textField: UITextField)
textField.layer.borderColor = .blue
errorMessage.isHidden = true
【讨论】:
以上是关于如何在 Swift 中的 UITextField 下显示错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 2.0 中只允许 UITextfield 中的某些数字集
如何比较 Swift 中的字符?我有带有文本和 UITextField 的 UILabel
如何使我在 UIAlertController 内的 UITextField 中输入的数据通过 Swift 中的重置持续存在?
如何在 Swift 中创建 UITextField 对象数组?