如何在IOS中将输入文本框实现为必填字段

时间:2014-03-04 11:39:35

标签: ios

我是Iphone开发的新手。对于专家来说,这将是最简单的。但我在谷歌搜索,我找不到任何东西。

我想通过手动和编程方式将输入文本框实现为必填字段。在android中,它很容易实现。但我不知道如何在IOS中实施。

你能告诉我怎么做吗?

3 个答案:

答案 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
}

构建并运行该应用程序以测试我们实施的验证。您可以将验证标签的文本颜色设置为红色,以吸引用户的注意。 enter image description here 希望这可以帮助您