Ich erstelle Anmeldebildschirm mit Objective C, in dem ich Validierung für Benutzername (E-Mail) und Passwort implementieren möchte.Wie dies auf sehr einfache Weise zu implementieren.Setzen Sie das Limit auf UITextField in ObjectiveC
Antwort
Sie können immer textField shouldChangeCharactersInRange-Delegat verwenden, um die Anzahl der in textField zulässigen Zeichen zu behandeln. Haben Blick auf die Lösung unten zur Verfügung gestellt :) Hoffe, es hilft
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(textField == self.emailTextField){
if (textField.text.length < 30 || string.length == 0){
return YES;
}
else{
return NO;
}
}
}
EDIT
Wie pro Ihre Kommentare Sie nicht das Textfeld Delegierten werden recieveing, also hier ist das, was können Sie tun :)
mitIn Ihrem Viewcontroller, bestätigen die UITextFieldDelegate,
YourViewController : UIViewController <UITextFieldDelegate>
In Ihrem viewDidLoad oder viewWillAppear Setzen Sie den textField-Delegaten als self.
self.emailTextField.delegate = self;
Wenn Sie auf die Schaltfläche Validieren klicken, stellen Sie die Taste Aktion Validate und den Code unten sehen, überprüfen Sie zuerst die beiden Textfeld leer ist oder nicht, wenn Sie Text geben dann erneut überprüfen Sie die gültige E-Mail-Typ oder nicht, dann werden alle Bedingungen erfüllt sind, dann wird Ihr Code und laufen,
-(IBAction)action:(id)sender
{
if (tfMail.text.length == 0 || tfPass.text.length == 0)
{
[self validatetextfield];
}
else if (![tfMail.text isEqualToString:@""])
{
NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
//Valid email address
if ([emailTest evaluateWithObject:tfMail.text] == YES)
{
//Its validated put your success code,
}
else
{
UIAlertController *aler = [UIAlertController alertControllerWithTitle:@"Test!" message:@"Please Enter Valid Email Address. \nex. [email protected]" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self dismissViewControllerAnimated:YES completion:nil];
}];
[aler addAction:action];
[self presentViewController:aler animated:YES completion:nil];
//not valid email address
}
}
}
Warnmeldung Methode setzen: für mich
-(void) validatetextfield
{
if (tfMail.text.length==0) {
UIAlertController *aler = [UIAlertController alertControllerWithTitle:@"Email Field Empty!" message:@"Please Enter the Email" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self dismissViewControllerAnimated:YES completion:nil];
}];
[aler addAction:action];
[self presentViewController:aler animated:YES completion:nil];
[tfMail becomeFirstResponder];
}
else if (tfPass.text.length==0)
{
UIAlertController *aler = [UIAlertController alertControllerWithTitle:@"Password Field Empty!" message:@"Please Enter the Password" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[self dismissViewControllerAnimated:YES completion:nil];
}];
[aler addAction:action];
[self presentViewController:aler animated:YES completion:nil];
[tfPass becomeFirstResponder];
}
}
seine erfolgreich arbeiten, hoffen, dass seine hilfreich.
Ich habe es versucht, aber ich kann nicht verbinden, um die Funktion zu delegieren. –
können Sie mir eine funktionierende Probe geben. –
@ mohith-p: Haben Sie Ihr Textfeld delegieren als Selbst ??? –