我是Iphone开发的新手。对于专家来说,这将是最简单的。但我在谷歌搜索,我找不到任何东西。
我想通过手动和编程方式将输入文本框实现为必填字段。在android中,它很容易实现。但我不知道如何在IOS中实施。
你能告诉我怎么做吗?
答案 0 :(得分:3)
告诉我,如果我错了,但我认为,基本上,你想向用户提供反馈,是吗?在这种情况下,您可以选择几个选项:
1-与LML相似,您可以通过以下方式添加警报视图:
UIAlertView *yourAlert = [[UIAlertView alloc] initWithTitle:@"Your Title" message:@"Explain more" delegate:yourDelegate cancelButtonTitle:@"Ok" otherButtonTitles:nil];
请注意,只有在用户单击警报中的按钮 之后才需要设置代理,否则,您可以将其设置为nil。有关详细信息,请参阅Apple's Documentation。
2-另一种方式基于UITextFieldDelegate方法。当您的用户正在编辑该字段时,您可以在其中显示反馈图标,或者在其旁边显示反馈图标。默认情况下,您可以在字段中显示红叉,并禁用验证按钮。当值向右转时,显示绿色检查图标并启用验证按钮。
基本上,你可以这样做:
在viewController的 viewDidLoad 中,添加以下内容:
[yourField addTarget:self action:@selector(giveFeedback:) forControlEvents:UIControlEventEditingChanged];
这样,只要修改了字段的值,就会执行 giveFeedback 方法。那就是UIControlEventEditingChanged。
然后, giveFeedback 可能是这样的:
- (void) giveFeedback:(id)sender {
// Here, field is valid when it's 7 characters long
if (self.yourField.text.length == 7) {
self.checkmark_img.hidden = false; // Pops out the green check
self.uncheck_img.hidden = true; // Hide the red cross
self.ok_button.enabled = true; // Enable your validation button (or anything)
} else {
// Contrary of above
self.uncheck_img.hidden = false;
self.checkmark_img.hidden = true;
self.ok_button.enabled= false;
}
}
您可以随意创作,例如,您可以添加错误消息,而不是红叉和绿色检查图标,只要值为false,就会打印出来。
答案 1 :(得分:0)
我不明白你的目标,但检查必填字段的最佳方法是检查上面的epty文字
if (textField.text.length == 0)
{
/* empty - show mandatory field alert */
}
else
{
/* contains value */
}
答案 2 :(得分:0)
我也遇到了同样的问题,但是我在这篇文章中找到了Sol4
https://cocoacasts.com/five-simple-tips-to-make-user-friendly-forms-on-ios
这是答案的标题:
表单验证是可用表单的另一个关键组成部分。在将用户的输入发送到后端之前,不仅需要验证用户的输入,还需要告诉用户他们的输入是否有问题以及如何解决。
我们以密码文本字段为例。如果密码不正确,我想显示一条错误消息。打开ViewController.swift并声明UILabel类型的出口passwordValidationLabel。如果密码不正确,此标签将向用户显示错误消息。 导入UIKit
ViewController类:UIViewController {
// MARK: - Properties
@IBOutlet var firstNameTextField: UITextField!
@IBOutlet var lastNameTextField: UITextField!
@IBOutlet var passwordTextField: UITextField!
@IBOutlet var emailTextField: UITextField!
@IBOutlet var passwordValidationLabel: UILabel!
}
打开Main.storyboard,并在密码文本字段下方插入一个标签。将标签连接到passwordValidationLabel插座。
我们将实现一个简单的验证方法,该方法将在用户点击返回键或完成键时触发。目前,我们仅验证密码文本字段。这就是validate(_ :)方法的外观。 //标记:-辅助方法
fileprivate func validate(_ textField:UITextField)->(布尔,字符串?){ 警卫队让text = textField.text else { 返回(false,nil) }
if textField == passwordTextField {
return (text.characters.count >= 6, "Your password is too short.")
}
return (text.characters.count > 0, "This field cannot be empty.")
}
validate(_ :)方法接受UITextField实例作为其唯一参数,并返回类型(布尔,字符串?)的元组。如前所述,我们目前仅验证密码文本字段。方法返回的元组包括验证结果以及向用户显示的可选错误消息。
我们还需要更新UITextFieldDelegate协议的textFieldShouldReturn(_ :)方法。如果用户点击返回键时密码文本字段是第一响应者,我们将验证文本字段的文本。如果验证成功,我们仅将电子邮件文本字段作为第一响应者。我们还会使用错误消息更新密码验证标签,并显示或隐藏密码验证标签。
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField {
case firstNameTextField:
lastNameTextField.becomeFirstResponder()
case lastNameTextField:
passwordTextField.becomeFirstResponder()
case passwordTextField:
// Validate Text Field
let (valid, message) = validate(textField)
if valid {
emailTextField.becomeFirstResponder()
}
// Update Password Validation Label
self.passwordValidationLabel.text = message
// Show/Hide Password Validation Label
UIView.animate(withDuration: 0.25, animations: {
self.passwordValidationLabel.isHidden = valid
})
default:
emailTextField.resignFirstResponder()
}
return true
}
}
在viewDidLoad()中,我们调用一个辅助方法setupView()。在setupView()中,我们隐藏了验证标签。 //标记:-查看生命周期
override func viewDidLoad() {
super.viewDidLoad()
// Setup View
setupView()
}
// MARK: - View Methods
fileprivate func setupView() {
// Configure Password Validation Label
passwordValidationLabel.isHidden = true
}