1

サインアップページがあり、サインアップで詳細を入力したら、キーボードの [送信] ボタンをクリックします (リターンキーの代わりに)。サインアップ ページのすべてのデータが保存され、前のログイン ページに移動します

ユーザー名電子メールのテキストフィールドについては、次のボタンを使用して、各テキストフィールドの操作が完了するとタブが切り替わるようにしました。正常に動作しています。

そのため、電子メールのテキスト フィールドのキーボードで [次へ] ボタンをクリックすると、パスワードのテキスト フィールドが表示され、パスワードの入力が完了すると、キーボードの [送信] ボタンが表示されます。しかし、クリックしようとしても、アクションは実行されません。

そのため、送信ボタンをクリックすると、サインアップ ページに入力したすべてのデータが保存され、前のログイン ページに移動するはずです。通常の送信ボタンのように機能し、他の通常のボタンではなく、キーボードの送信ボタンがアクションを実行するようにします。

これは、サインアップ ページの [送信] および [次へ] キーボード ボタンのコードです。

-(IBAction)send
{

    NSUserDefaults *stringDefault = [NSUserDefaults standardUserDefaults];

    [stringDefault setValue:@"" forKey:@"stringKey"];
    [stringDefault setValue:name.text forKey:@"Username"];
    [stringDefault setValue:email.text forKey:@"EmailID"];
    [stringDefault setValue:password.text forKey:@"password"];
    [stringDefault synchronize];
    NSLog(@"%@",name.text);
    //   NSLog(@"%@",email.text);`
    // NSLog(@"%@",password.text);
    NSString *emailRegEx = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
    //Valid email address
    if ([emailTest evaluateWithObject:email.text] == NO) 
    {
        UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid email id" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
        [Alt show];
        [Alt release];
        NSLog(@"email not in proper format");

    }
    NSString *passwordd = @"[A-Za-z]{8,12}";
    NSPredicate *passtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordd];
    //Valid email address
    if ([passtest evaluateWithObject:password.text] == NO) 
    {   
        UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
        [Alt show];
        [Alt release];
        //  NSLog(@"email not in proper format");

    }

    login *l=[[login alloc]initWithNibName:@"login" bundle:nil];

    [self presentModalViewController:l animated:YES];

   }


-(IBAction)next:(UITextField *)ras{
        if (ras == name) {
            [ras resignFirstResponder];
            [email becomeFirstResponder];
        } 
        else if (ras == email) {
            [ras resignFirstResponder];
            [password becomeFirstResponder];
        }
        else if (ras == password) {
            [ras resignFirstResponder];
        }
        //return YES;
    }

これに対する解決策はありますか?

4

1 に答える 1

2

プロパティ UIReturnType を UITextField の UIReturnTypeSend に送信し、デリゲートを設定します

[usernameTextField setReturnType:UIReturnTypeSend];
[usernameTextField setDelegate:self];
[passwordTextField setReturnType:UIReturnTypeSend];
[passwordTextField setDelegate:self];

次に、textFieldDelegateMethod ShouldReturn を使用します

-(BOOL)validationSuccess{

    NSString *emailRegEx = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";

    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];

    //Valid email address
    if ([emailTest evaluateWithObject:email.text] == NO)
    {
        UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid email id" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
        [Alt show];
        [Alt release];
        NSLog(@"email not in proper format");

        return NO;

    }
    NSString *passwordd = @"[A-Za-z]{8,12}";
    NSPredicate *passtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordd];
    //Valid email address
    if ([passtest evaluateWithObject:password.text] == NO)
    {
        UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
        [Alt show];
        [Alt release];
        //  NSLog(@"email not in proper format");

        return NO;

     }

    return YES;

}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

    if([self validationSuccess])
    {
        //Save your data here

        [self saveData];

        //If you have pushed from loginviewcontroller then you can go back directly

        [[self navigationController] popToRootViewControllerAnimated:YES];

        //Or if you have presented from loginviewcontroller

         [self dismissViewControllerAnimated:YES completion:NULL];

    }

    return YES;
}

-(void)saveData{

    NSUserDefaults *stringDefault = [NSUserDefaults standardUserDefaults];
    [stringDefault setValue:@"" forKey:@"stringKey"];
    [stringDefault setValue:name.text forKey:@"Username"];
    [stringDefault setValue:email.text forKey:@"EmailID"];
    [stringDefault setValue:password.text forKey:@"password"];
    [stringDefault synchronize];

}
于 2012-10-24T06:54:39.703 に答える