0

[OK]ボタンと[キャンセル]ボタンのあるUITextFieldを1つ含むUIAlertViewが1つあります。[OK]ボタンをクリックすると、webServiceが呼び出されます。Webサービスを呼び出す前にキーボードを返却したい。Webサービスからの応答がなくなるまで、キーボードが返されません。その半分の画面がWebサービスのロード中にユーザーに表示されないためです。これが私がした私のコードです。

UIAlertView *alertview = [[UIAlertView alloc] initWithTitle:@"Forgot Password" message:@"    " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];

    // Adds a username Field
    alertEmailtextfield = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 29.0)]; 
    alertEmailtextfield.layer.cornerRadius = 07.0f;
    [alertEmailtextfield setBorderStyle:UITextBorderStyleRoundedRect];
    alertEmailtextfield.placeholder = @"Enter Email";
    [alertEmailtextfield setBackgroundColor:[UIColor whiteColor]]; 
    alertEmailtextfield.autocapitalizationType =UITextAutocapitalizationTypeNone; //For Making Caps Off
    [alertview addSubview:alertEmailtextfield];

[alertview show];


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    if (buttonIndex == 1) {

        if ([alertEmailtextfield.text length] != 0) {

            if (![self validEmail:alertEmailtextfield.text]) {

                [AlertView UIAlertView:@"Enter email is not correct"];

            }else{
                //[alertEmailtextfield resignFirstResponder];

                [NSThread detachNewThreadSelector:@selector(startSpinner) toTarget:self withObject:nil];

                Boolean isForgotPassword = [serverConnection forgotPassword:alertEmailtextfield.text];

                if (isForgotPassword) {

                    NSLog(@"Mail is send");

                    [AlertView UIAlertView:@"New password is send to your mail"];
                    [spinner stopAnimating];

                }else{

                    [AlertView UIAlertView:@"User does not exist"];
                    [spinner stopAnimating];
                }
            }
        }else{

            [AlertView UIAlertView:@"Text Field should not be empty"];
        }
    }
}

UIAlertViewのUITextFieldでキーボードを返す方法を知っている人がいれば、助けてください。

4

2 に答える 2

1

UIは、Webサービスが完了するのを待ってスタックしています。バックグラウンドスレッドでWebサービスを呼び出すと、問題が解決します。

[self performSelectorInbackgroundThread:@selector(yourWebservice)];
于 2012-06-07T13:14:06.037 に答える
0

同じメインスレッドで両方のタスク(Webサービスの呼び出しとキーボードの再設定)を実行している可能性があるため、サーバーからデータが読み込まれなくなるまで、キーボードはビューから離れません。のようなバックグラウンドスレッドでweserviceメソッドを呼び出します。

-(void)alertView:(CustomAlert *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
[textField resignFirstResponder];
UPdate
[self PerformSelectorInBackground:@selector(yourWebservice)withObject:nil];

}

于 2012-06-07T13:30:02.663 に答える